Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-12-2011, 12:10   #1 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Variable aus einem MovieClip speisen...

Hey Leute,

ich hänge gerade an einer echt Simplen Sache.. komme aber nicht weiter..
Ich könnt Wetten ich habe das schon tausendmal genau auf diesen Weg gemacht und jetzt funktioniert es nicht mehr so

Zum Problem:
Ich erstelle mir dynamisch einen MC-Namen aus meiner Bibliothek und schmeiße den auf die stage.

Jetzt möchte ich eine Variable die auf der Main-Timeline liegt mit einer aus dem eben hinzugefügten MC überschreiben.

PHP-Code:
var rubrik                e.target.parent.name;
    var 
land                e.target.name;
    var 
content:String      rubrik+"_"+land+"_Content";
    var 
newClass:Class      = getDefinitionByName(content) as Class;
    var 
inhalt:MovieClip    = new newClass();
        
inhalt.name            content;
    

    
container.addChild(inhalt);
    
checkContent(inhalt);
}

function 
checkContent(obj){
    
container.removeChildAt(0);
    
    
trace(obj.name);
    
trace("\t"+obj.BOX_ARRAY);

BOX_ARRAY ist die Variable (Array) auf die ich zugreifen möchte...

Im hinzugefügten MC liegt nur folgendes:
PHP-Code:
var BOX_ARRAY:Array = new Array("435","435"); 
mein trace(
PHP-Code:
SS_OE_Content
    null 
);

Was mach ich falsch/übersehe ich gerade?
Danke und Gruß!!
Danjy ist offline   Mit Zitat antworten
Alt 06-12-2011, 13:17   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Zitat:
Ich könnt Wetten ich habe das schon tausendmal genau auf diesen Weg gemacht und jetzt funktioniert es nicht mehr so
ja, AS3 != AS2

Zitat:
Im hinzugefügten MC liegt nur folgendes:
PHP-Code:
var BOX_ARRAY:Array = new Array("435","435"); 
das wird in AS3 zu folgendem compiliert:
PHP-Code:
public var BOX_ARRAY:Array = null;

private function 
frame1():void
{
    
BOX_ARRAY = new Array("435","435");

dein Code checkContent wird aber ausgeführt, bevor der MC bei Frame 1 angelangt ist.

also entweder legst du eine Klasse an, und schreibst es da rein, so dass der Wert vor Frame1 gesetzt wird, oder du trickst mit einem getter rum, und schreibst in den MC folgendes:
PHP-Code:
function get BOX_ARRAY():Array
{
    return [
"435","435"];

Und wieso schreibst du Zahlen als Strings? irgendwie kann ich mir schlecht vorstellen, das dass (eigen)namen sind.
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (06-12-2011 um 13:18 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 06-12-2011, 13:39   #3 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
hmm... Heißt das, dass wenn ich
PHP-Code:
function get BOX_ARRAY():Array
{
    return [
435,435];

in meinen MC schreibe der meine
Zitat:
var BOX_ARRAY:Array
in der Main-Timeline überschreibt?

Das ich da Strings aus den Zahlen gemacht hatte hatte nur Testzwecke.. sorry vergessen raus zu nehmen
Danjy ist offline   Mit Zitat antworten
Alt 06-12-2011, 13:55   #4 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Ich mein es funktioniert ja, aber ich verstehe leider noch nicht ganz den Zusammenhang.

Was würde ich denn tuen wenn ich sag ich mal nur 3 weitere Variablen überschreiben/holen möchte?
Danjy ist offline   Mit Zitat antworten
Alt 06-12-2011, 13:57   #5 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
nein, der Code den du da gepostet hast tangiert die Hauptzeitleiste überhaupt nicht; greift nicht darauf zu und schreibt erst recht nichts rein.

ich dachte dein Problem wäre erstmal gewesen, dass
trace("\t"+obj.BOX_ARRAY);
null ausgibt.

wenn du möchtest dass der Wert auf der Hauptzeitleiste überschrieben wird, musst du das auch einbauen
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 06-12-2011, 14:07   #6 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
also folgendes funktioniert:
PHP-Code:
function loadContent(e:MouseEvent){
    
    var 
rubrik                e.target.parent.name;
    var 
land                e.target.name;
    var 
content:String      rubrik+"_"+land+"_Content";
    var 
newClass:Class      = getDefinitionByName(content) as Class;
    var 
inhalt:MovieClip    = new newClass();
        
    
container.addChild(inhalt);
    
cleanContent(inhalt);
}

function 
cleanContent(inhalt){
    
container.removeChildAt(0);
    
trace(inhalt.BOX_ARRAY);

im MC:
PHP-Code:
function get BOX_ARRAY():Array
{
    return [
435,435];

aber ob das jetzt alles nötig ist nur um eine Variable in einem MC auszulesen weiß ich nicht...

Ich mein es kommt mir vor als würde ich gerade den Weg durch den Sumpf nehmen, obwohl ich die Wahl habe auf einer Wolke über ein grünes Tal mit Wasserfällen zu fliegen.

Damals meine ich hätte ich einfach das MC auf die Bühne geschmissen und mittels
PHP-Code:
trace(mc.variable); 
meinen Wert bekommen...

Vielleicht habe ich es auch falsch erklärt...

Main-Timeline:
PHP-Code:
var BOX_ARRAY:Array; 
Dieses Array möchte ich mit dem Array welches im MC liegt überschreiben um auf der Main-Timeline dauerhaft zugriff darauf zu haben.
Danjy ist offline   Mit Zitat antworten
Alt 06-12-2011, 15:30   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Das scheint dann aber ein grundsätzliches Problem mit der Struktur zu sein.
Dann sollten wir mal zurück zum Anfang. also, was genau willst du bauen?


Mir schauderts allein bei folgendem Konstrukt:
PHP-Code:
    var rubrik                e.target.parent.name;
    var 
land                e.target.name;
    var 
content:String      rubrik+"_"+land+"_Content";
    var 
newClass:Class      = getDefinitionByName(content) as Class;
    var 
inhalt:MovieClip    = new newClass(); 
Und das hat michts mit Flash zu tun, sondern damit, wie du deine Objekte verwaltest.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 06-12-2011, 16:30   #8 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Ok.. also ich habe mehrere MovieClips die folgenden Aufbau haben:
PHP-Code:
RUBRIK -> LAND -> Content
Beispiel
SS-OE-Content 
Und per klick lösche ich den MC der schon in container-MC liegt
Zitat:
container.removeChildAt(0);
und adde einen neuen
PHP-Code:
var rubrik                e.target.parent.name;
    var 
land                e.target.name;
    var 
content:String      rubrik+"_"+land+"_Content";
    var 
newClass:Class      = getDefinitionByName(content) as Class;
    var 
inhalt:MovieClip    = new newClass(); 
Ist die Struktur so Käse? also viel wird da ja nicht gemacht oder was meinst du?

Zitat:
e.target.parent.name
gibt mir die Rubrik (Übernavigation)

Zitat:
e.target.name
gibt mir das Land (Subnavigation)

Ist eine Dropdown Navi in dem man die Rubrik auswählen kann und dann das jeweilige Land

Geändert von Danjy (06-12-2011 um 16:44 Uhr)
Danjy ist offline   Mit Zitat antworten
Alt 06-12-2011, 16:47   #9 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
den Code hatte ich schon verstanden
Zitat:
Ist die Struktur so Käse? also viel wird da ja nicht gemacht oder was meinst du?
dsas Problem daran ist, dass so wie du da Strings zusammenbaust, du nicht sicherstellen kannst, dass du nicht ins leere schießt.
bspw:
- target || target.parent haben keinen Namen (Namen sind in AS3 imo überflüssig)
- es gibt keine Klasse mit dem name
- oder die Klasse ist kein MovieClip

du musst hier sicherstellen, dass der Code funktioniert, und testen, testen, testen. eigentlich alle möglichen Kombinbationen.
weil Flash hier keine Compilerfehler schmeißt (der Code sieht ja gut aus, er sollte funktionieren), sondern Laufzeitfehler (bei irgendeiner Kombination hat es doch nicht hingehaun, und das merkt erst der Kunde/Spieler)

mal ganz davon abgesehen, dass namen langsamer sind als referenzen.

ich kann dir momentan aber auch nicht sagen, wie man das ganze "besser" implementieren könnte, dafür müsste ich die ganze Anwendung besser kennen, um dir ne andereStruktur empfehlen zu können (die aber auch Sinn macht)
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
addChild in einem MovieClip der in einem MovieClip sitzt b_reath ActionScript 3 6 23-08-2010 19:12
Aus Movieclip auf eine Variable in einem anderen Movieclip zugreifen... alinaleinchen ActionScript 1 2 13-04-2007 17:15
asfunction funzt nicht in einem textfield in einem Movieclip minimal Flash Einsteiger 2 04-10-2006 14:52
txt variable in einem movieclip?? JasonX Flash MX 5 07-02-2004 15:05
Wie spreche ich eine Variable aus einem Pulldown Movieclip an? druppandi Flash 4 und Flash 5 4 24-03-2003 12:07


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele