[MX] Wieso geht der Code nicht?

ollek81

Erfahrenes Mitglied
Tach!!

Ich bin mal wieder zu doof!!!
Das steht bei mir im ersten Bild des MC "Home":

var Param;
var Pos2;
var Pos1;
var Text;
var Src;
var Target;

Pos2 = Param.indexOf(";");
Text = Param.substring(0,Pos2);
Pos1 = Pos2 + 1;
Pos2 = Param.indexOf(";", Pos1);
Src = Param.substring(Pos1,Pos2);
Pos1 = Pos2 + 1;
Pos2 = Param.length;
Target = Param.substring(Pos1,Pos2);
_root.Button.Text = Text;


Das im HTML-Quelltext:

window.document.Home.SetVariable("Param", "AmblyHaupt;amblyhpt.htm;Text")

Natürlich mit dem ganzen object-Zeugs drum...

Irgendwie kann der das nicht auswerten!! Bis auf Param (bekommt ja den Wert aus dem HTML-Code) bleiben alle Variablen leer!
Wenn ich die Variable Text so übergebe wie Param, läuft es ohne Prob.

Kann mir jemand Helfen??

Ollek81
 
Tach!!

Home ist der Name und die ID vom MC im HTML-Quelltext!!!
Sorry, hatte ich vergessen zu erwähnen...

Ollek81
 
Ich nehme an, du meinst trotz Korrektur dennoch den gesamten Film, nicht einen MC (MovieClip) daraus?!

Schonmal vorneweg ein Hinweis:
Eine Variablendeklaration mit dem var-Keyword braucht in deinem Fall (und auch sonst in Flash eigentlich) nicht stattfinden, wenn du einer Variablen gleich einen Wert zuordnest.

Geist
 
Tach!

Das mit dem var ist ne alte Angewohnheit. Zu viele verschiedene Programmiersprachen... ;-)
Home ist bei mir die eingebettete Flash-Datei, ja.
Das Ding ist ein Flash-Button.
Deswegen ja auch _root.Button.Text. Button heißt dann das Schaltflächensymbol da drin.
_root.Button.Text ist ne andere Variable als die Text, die ich da mit var baue. (ja, schlecht gemacht, ich weiß!!)

Das Problem ist wie gesagt, das der übergebene string zwar in param geschrieben wird, (kann man ja mit .....home.GetVariable("param") auslesen) aber die ganzen Stringfunktionen nicht gehen! Alle anderen Variablen bleiben leer, obwohl die ja ein Stück aus dem String von param zugewiesen bekommen sollen...
Irgendwie klar?? Wenn ich param bearbeiten will, verschwindet irgendwie der Inhalt, oder so. Ich verstehe das nicht!! Normalerweise sollte das ohne Probleme funktionieren. Muss wieder so'n Tick von Flash MX sein...

Ollek81

P.S.: Hab die Seite (Ambly.htm) und die fla mal angehängt. Vielleicht bringt dich das ja weiter
 

Anhänge

  • dynbutton.zip
    10,8 KB · Aufrufe: 13
Hoi ollek,

das Problem liegt daran, dass Flash bei dir etwas mit einer Variable durchführen soll, die noch gar nicht im Film vorhanden ist.
Es fehlt sozusagen die zeitliche Koordination.
Du übergibst zwar die Variable per JavaScript-Methode, aber dein Film ist schon mit dem ActionScript durchgerattert und kann demzufolge mit der Variable nix mehr anfangen.
Heißt du darfst im Prinzip dein ActionScript erst in dem Augenblick ausführen, in welchem die Variable, die du per JavaScript überträgst, schon im Film gelandet ist.
Entweder musst du das mithilfe einer weiteren JavaScript-Methode machen, folgende scheint mir da recht geeignet, wenn du sie nach der Übergabe stattfinden lässt:
PHP:
document.Home.TCallFrame("_root", 1);
1 daher, weil dein Film in JavaScript-Verhältnissen bei Frame 0 beginnt, nicht bei Frame 1.

Du verlagerst also dein gesamtes ActionScript von Frame 1 nach Frame 2.
Dann setzt du ein stop() auf den ersten Keyframe deines Filmes, damit bleibt der Film mit dem Abspielkopf ständig in diesem Frame.
Bei dem JavaScript-Befehl von oben jedoch dürften kurzzeitig die Aktionen aus dem 2. Frame durchgelaufen werden und dennoch der Film im 1. Frame bleiben.

Damit sollte eine Verarbeitung der übergebenen Variable dann erfolgen, wenn die Variable schon im Film selbst vorhanden ist.

hth,
Geist
 
Wenn ich's so lese, verstehe ich meine Antwort mittlerweile selbst kaum. ;)

Aber wenn du dennoch damit eine Lösung hinbekommst, dann wär's natürlich besser, ansonsten kann ich auch nochmal versuchen, das anders nahezubringen - es liegt aber dennoch am zeitlichen Ablauf...

Geist

P.S.: hth = hope/hoping to help - Babylon hätte das auch gewusst :)
 
Tach!!

Auch, wenn du es selbst nicht mehr verstehst, es geht!!! JUHU!!!
Den ganzen Actio-Script-Kram in ein 2. Bild packen und ins erste 'n Stop();
Param laden und ab in Bild 2. FERTIG!!

Klasse! Danke!

Ollek81
 
Schonmal vorneweg ein Hinweis:
Eine Variablendeklaration mit dem var-Keyword braucht in deinem Fall (und auch sonst in Flash eigentlich) nicht stattfinden, wenn du einer Variablen gleich einen Wert zuordnest.

stimmt so nicht, geist.

PHP:
var a = 10

ist nicht identisch mit

PHP:
a = 10

der erste fall definiert eine lokale variable, die dann verwendet wird, wenn der wert nur innerhalb einer funktion verwendet wird. ist die funktion durch, wird die variable aus dem memory gelöscht und erst bei erneutem aufruf der funktion wieder einglesen.

im zweiten fall definierst du eine zeitleistenvariable, die erst gelöscht wird, wenn man sie mit delete löscht. lokale variablen lassen sich mit delete gar nicht löschen.




PHP:
function container (){
	var a=10;
}
container()
trace (a) // ergibt undefined
PHP:
function container (){
	a=10;
}
container()
trace (a) // ergibt 10


:)
 

Neue Beiträge

Zurück