[MX] isset(variable)

digleu

Mitglied
[MX] isset(variable); ?

gibt es in AS so eine art isset wie in php. Also eine funktion, die man z.B. so nutzen kann:
if (isset(extern1)) {
textfeld.text=extern1;
}
weiter würde ich dann noch gerne wissen, ob es eine art global-array gibt:
also ich habe meinen flash-Film mit paramtern in html eingebungen (smiley.swf?extvar1=dsds) und habe nun vor diese Paramter mit php erzeugen zu lassen. Jetzt sind diese Variablen direkt in AS verfügbat. Aber kann man ihren Namen auch zusammensetzen. Also ich hänge extvar1 extvar2 etc. bis extvar10 dran und möchte nun für jede Variable was machen. Also in php würde ich es ungefähr so machen
PHP:
$i=1;
while(isset($GLOBALS['extvar'.$i])) {
  // aktion
  $i++;
}
geht sowas auch in flash?
Sorry steige gerade in das Thema ein, werde (wie immer ;)) mein bestes geben mich nicht sonderlich dumm anzustellen.
hoffe auf Antwort
so long
digleu
 
hi

meinst du sowas :
PHP:
_global.a=["a","b","c","d","e","f"]; //global-array erstellen

for (i in a){trace (a[i])};         // jedes element in einen
                                    // befehl einbauen


sonst vielleicht noch mal erklären:

in welcher form landen deine variablen in flash (array, loadVars)?
was möchtest du mit den variablen in flash genau machen ?

gruss skyla
:)
 
Nene ich habe doch eben gesagt, dass ich die swf datei mit Paramtern in html eingefügt habe: <PARAM NAME=movie VALUE="smiley.swf?extvar1=dsds">
weil ich das mit dem LoadVars irgendwie voll nich hinbekommen habe
ich habe LoadVars('menu.txt'); gemacht und dannach müssen die wars, die als GET-String in der Datei standen doch auch einfach so zur verfügung stehen oder habe ich das auch falsch verstanden?

Mit den Variablen will ich dannach ein Menü dynamisch erzeugen. Wie genau weiß ich noch nicht, das design wird n andere machen aber es soll maximal ein Untermenü geben und eine id soll übergeben werden, die anzeigt welches Untermenü gerade offen ist, falls irgendeins offen ist. Ich denke mal in Flash gibt es Möglichkeiten um diese Problem zu lösen ...
Aber nochmal zu meinem Grundlegenden Problem: Ich habe eine unbekannte Anzahl von Variablen in der Flashdatei, die sich nur durch eine Zahl an ihren ende Unterscheiden und möchte zu jeder Variablen ein Textfeld von mir aus erzeugen (ich glaube das ist nicht so schwer, das habe ich glaub' ich schonmal geschafft). Kann man später denn auch einfach Filme laden, damit die Menüpunkte auchnoch nach was aussehen und dann halt positionieren?
Habe dazu auch schon was inner Forumsuche gefunden aber das habe ich nicht verstanden und das funktionierte auch mit diesem LoadVars Prinzip, dass ich auch nicht hin bekomme ..
 
ok.

hab vor ein paar tagen das hier gemacht: ein loadVars Objekt holt alle variablen aus einer txt.datei und erstellt dazu dynamische textfields. vielleicht isses ja was du suchst.
 

Anhänge

  • adresses.zip
    5,5 KB · Aufrufe: 25
ein Stop() in AS bewirkt doch nicht, dass der Code aufhört ausgeführt zu werden oder? Also der Code vom aktuellen Frame wird noch zuende gerechnet oder ?
hm was passiert bei
array.prototype.array2D = function() {

}
wozu ist der reservierte Ausdruck "prototype"
um mal irgendwo anzufangen ?
 
stop() ist eine movieClip-Methode und bewirkt, dass der Film in dem frame, indem das stop() steht angehalten wird. Die Maintimeline (root) ist in flash auch ein movieclip. der code im frame wird durch das stop() nicht beeinflusst. code in frame 2 wird aber erst ausgeführt, wenn der mc amgewiesen wird, weiterzuspielen mc.play() oder mc.gotoAndPlay(2)

*******************************************

Prototype:
MovieClip ist in Flash ein Objekt. Objekte haben Methoden (MovieClip zB stop()), man kann ihnen aber auch neue Methoden verpassen und dies geht pmmer über den prototype der klasse

zB

MovieClip.prototype.sayHello=function(){
trace("hallo");
}

wenn du jetzt irgendwo in deinem film einen mc rumliegen hast^, kann der ab jetzt hallo sagen:

my_mc.sayHallo() // ausgabe hallo


der vorteil nebenbei: prototype ist global.


*******************************************
mit
array.prototype.array2D = function() { }

füge ich meiner arrayKlasse die neue Methode array2D hinzu.

array2D erzeugt bei ihrem aufruf einen 2Dimensionalen array col (für collector oder so), mit dem folgenden inhalt (variablentest)

an1: [Objekt #4, Klasse 'Array'] [
0:"Peter",
1:"Pan",
2:"Panstreet11",
3:"Disneyland"
],
an2: [Objekt #5, Klasse 'Array'] [
0:"Marilyn",
1:"Monroe",
2:"street2",
3:"Hollywood"
],
an3: [Objekt #6, Klasse 'Array'] [
0:"Goerg",
1:"Bush",
2:"somewhere",
3:"inhell"
],
an4: [Objekt #7, Klasse 'Array'] [
0:"Rattan",
1:"Ratcliff",
2:"street4",
3:"BoccaRatton"
],
an5: [Objekt #8, Klasse 'Array'] [
0:"Hidi",
1:"VonTobel",
2:"Bernstrasse",
3:"Geneva",
4:
],
an6: [Objekt #9, Klasse 'Array'] [
0:"stephan",
1:"zesiger",
2:"thunstrasse101a",
3:"bern"
],
an7: [Objekt #10, Klasse 'Array'] [
0:"fabian",
1:"kuelling",
2:"thunstrasse",
3:"bern\r\n"
]
]
Variable _level0.col = [Objekt #11, Klasse 'Array'] [
0: [Objekt #10, Klasse 'Array'],
1: [Objekt #9, Klasse 'Array'],
2: [Objekt #8, Klasse 'Array'],
3: [Objekt #7, Klasse 'Array'],
4: [Objekt #6, Klasse 'Array'],
5: [Objekt #5, Klasse 'Array'],
6: [Objekt #4, Klasse 'Array']
]



zuunterst findest du nun den col array, der 7 elemente enthält, die wiederum selber arrays sind (Objekte 4 bis 10)

ist nicht ganz einfach, sorry
 
nene ich bin schon ein weilchen am programmieren und eigentlich ist das alles ja das gleiche. Habe eigentlich alles verstanden. Wo wird das denn mit trace ausgegeben?
Also Array2D ist eine Array-Methode und lässt sich somit auf jede Array anwenden, richtig?
und wenn ich das richtig sehe dann wird im 2. Frame so viele Movies in den aktuellen Movie geladen wie die array elemente hat, richtig?
bezeichnet this den aktuellen Frame oder den aktuellen MovieClip? Oder was? und was bezeichnet dann _root? ich denke mal _parent bezeichnet das übergeordnete Objekt? und was ist _level0 ?
weiter unten machst du
box = new LoadVars();
und dann
box.onLoad
ist das sowas wie ein Event-Handler? Also wenn box geladen wird oder so? und beimLoad wird dann die danachstehene Funktion aufgerufen?

k das waren jetzt ein paar Fragen ;) danke auf jedenfall für deine Mühe, finde ich voll cool, dass du so einem wie mir auf die Beine hilfst !
 
no problem. find's genial, wie schnell du mit deinen programmier-kenntnissen (java?) so schnell in as zurechtkommst (fast schon erschreckend-da könnte ja plötzlich jeder kommen;)

1. kein trace, film testen (ctrl+enter) und tastenkombi ctrl+alt+v um die variablen im ausgabefenster abzurufen.
2. richtig
3. richtig

4. this bezeichnet die timeline (bzw den movieclip) in dessen frame this geschrieben wird. wenn du auf die maintimeline schreibst:

stop() wird dies vom interpretor als this.stop() interpretiert

this in einer methode/funktion bezieht sich auf das objekt, auf das die methode angewendet wird.

bsp.
MovieClip.prototype.coordinates = function(){
trace(this._x)
trace(this._y)
}
my_mc.coordinates() // gibt die coordinaten der movieclip-instanz my_mc aus

5. box = new LoadVars(); erstellt ein neues loadVars() Objekt

richtig, eventhandler. ereignis = erfolgreiches einlesen aller externen daten in das loadvars objekt. Der Parameter gibt an, ob der Ladeoperation erfolgreich war (true) oder fehlschlug (false).


c u
 
hm ne TurboPascal, Delphi und vor allem PHP und die OOP-Züge davon ;)
also:
1. trace nur zum testen?
2. was bedeutet _root
3. und _parent
4. ich werde mich jetzt mal an die Entwicklung des gleichen Scripts, dass du mir geschickt hast begeben...

mfg und thx nochmal (!) digleu
 
oop hilft immer !

1. trace ist nur zum testen, das output window ist online nicht sichtbar. ich teste aber mehr mit ctrl+alt+v

2. _root ist die hauptzeitleiste in dem level, indem du dich gerade befindest. wenn du eine leere fla-datei öffnest, befindest du dich in _root von level0.

ich persönlich verwende _root nicht mehr. wenn es geht arbeite ich mit relativen pfaden (this oder eben _parent). parent ist wie der name schon sagt das elternteil. ist wie in xml. wenn du auf _root einen mc1 legst und in mc1 legst du einen mc2 und du möchtest aus einem code, der in frame 1 vn mc2 steht, die hauptzeitleiste ansprechen, schreibst du:

PHP:
_parent._parent.stop()

du könntest aber auch

PHP:
_root.stop()

oder

PHP:
_level0.stop()

schreiben.


gruss skyla:)
 

Neue Beiträge

Zurück