Frage zu OnClipEvent...

GELight

Mitglied
Tach auch...

Ich hab gerade ein kleines VerständnisProblem mit der OnClipEvent Function...

In der Hilfe steht, dass diese Function bei jedem Duchgang/Frame abgefragt wird.
In meiner Scene greift er nicht auf den MC zu, wo dieses Script drin liegt....

Was könnte ich falsch machen?

Mario...
 
Hmm, wenn du dein Problem nochmal so formulierst, dass man versteht was genau nicht funktioniert (und wenn möglich noch deine .fla - Datei anhängst), dann kann dir bestimmt auch jemand helfen.

sancho
 
OnClipEvent...

Okay... ich beschreibs mal.... ist nicht viel. Nur ein kleiner Test fürs erste.

Alles in allem nur ein Frame lang der Film.
Auf der Bühne liegen 2 dyn. Texte mit variablennamen mx und my.
Ein MC mit InstanceNamen Box.(vielleicht brauch ich den InstanceNamen hier auch nicht) Dieser besitzt dieses ObjectScript:

onClipEvent (enterFrame) {
mx = _xmouse;
my = _ymouse;
}

Die Textfelder sollen also nur die Mausposition ausgeben, die ja in der Function den Variablen zugewiesen werden. Ich weiß dafür brauch ich keine Funktion....
Es geht mir nur darum es kennenzulernen und den Fehler zu verstehen.

...lege ich die zwei zeilen in einen der HauptFrames, dann geht das ganze Spiel, wenn ich in Frame 2 sage gotoAndPlay(1);

Hoffe jetzt ist es gut erklärt....

Mario...
 
Ah, ok so ist es wirklich verständlicher :)

Dein Problem liegt nicht in dem onClipEvent (enterFrame) Handler, sondern darin dass die Variablen mx und my IN dem Mc gespeichert sind, du sie jedoch auf der Bühne abfragst.

zur Lösung:
Entweder: du schreibst das Script um
PHP:
onClipEvent (enterFrame) {
_parent.mx = _xmouse;
_parent.my = _ymouse;
}
wobei die _parent Eigenschaft vor den Variablen bewirkt, dass die Variablen eine Ebene über dem Mc gespeichert werden,

oder: du gibst den Textfeldern den richtigen Pfad für die Variablen, also Box.mx und Box.my.

Beide Lösungen sollten klappen,

sancho
 
Clip

Ich glaub ich habs verstanden...

Wenn ich Innerhalb eines MC Clips arbeite, dann muss ich Variablen von außen auch den richtigen Pfad zuweisen. Wenn ich aber aus dem MC einen Wert HERAUS einer anderen Var. zuweisen muss....wie mach ichs dann am besten.
Auch den genauen Pfad angeben?

...hast mir aber schon sehr viel weiter geholfen...

Mario...
 
Naja das Ganze ist hier ein oft vorkommendes Problem, am besten mit einem Beispiel erklärt.

Sagen wir mal man hat auf der Hauptbühne ( _root ) einen mc (Name: Kiste). In diesem mc hat man noch einen mc (Name: Box). Alles in allem also 3 potentielle "Orte" um Variablen zu Speichern (_root, Kiste und Box).

Jetzt erstellen wir 3 Variablen, die erste heisst 'main' und liegt auf der Hauptbühne, die zweite heisst 'second' und liegt im mc Kiste und die dritte heisst 'third' und liegt in Box.

Wenn du jetzt Scripte schreibst musst du genau darauf achten WO du sie schreibst und WORAUF du zugreiffen willst.

Relative Pfade
1. Fall: Script auf _root und die Variable 'third' wird benötigt
dazu wäre der Korrekte Pfad Kiste.Box.third

2. Fall: Script auf Box und die Variable 'second' wird benötigt
dazu wäre der Korrekte Pfad _parent.second

3. Fall: Script auf Box und die Variable 'main' wird benötigt
dazu wäre der Korrekte Pfad _parent._parent.main

Absolute Pfade
Wenn man auf eine Variable zugreifen will die auf der Hauptbühne liegt, dann kann man immer _root.varialenname verwenden.
Solche absolute Pfade sollte man allerdings nicht benutzen, da sich _root auch ändern kann, z.B. wenn man die .swf mit loadMovie(); in eine andere hineinläd.


Wenn noch fragen offen sind, einfach posten

sancho
 
OnClipEvent...

Danke für die ausfühliche Erklärung nocheinmal.... hast mir sehr gut geholfen.
Meine Probleme die ich gestern hatte sind gelöst und ich kann jetzt auch etwas freier meine Scripts anlegen.

...."Wenn noch fragen offen sind, einfach posten"...... MICH ICH DOCH GLATT...:-)
Hier ist auch schon die nächste Frage.

Du sagtest...."Solche absolute Pfade sollte man allerdings nicht benutzen, da sich _root auch ändern kann"...
Wie sollte ich sonst auf eine Variable bzw. Object oder Function zugreifen, wenn ich den Pfad nicht angebe? Kann ich die Variablen usw. auch publizierien also das sie sozusagen überall mit einer relativen PFadangebe abrufbar sind? Oder könntest mir da noch ein so feines Beispiel geben, wie man noch effektiver und sicherer arbeitet, falls noch weitere SWFs hinzugeladen werden? (mach oich recht oft)

Mario...
 
Nunja, als ich schrieb dass man absolute Pfade vermeiden sollte, meinte ich das man stattdessen die relativen Pfade verwenden sollte.

Es gibt allerdings wirklich eine Möglichkeit um Variablen überall verfügbar zu machen. Die Eigenschaft _global sorgt dafür.
Bsp: _global.nummer wäre eine Variable die du von überall aus, ohne genauere Pfadangabe, abrufen kannst.

sancho
 
relative Pfade...

...jetzt bin ich durcheinander...

Was genau sind nun zB. RELATIVE Pfadangeben?

_root.film.box._x wäre sozusagen eine absolute oder?

Mario...
 
Genau. Absolute Pfade sind solche, die einen Fixpunkt (~> absoluten Ausgangspunkt) haben wie z.B. _root.
Relative Pfade sind die, die relativ von einem Objekt / mc ausgehen und unter umständen _parent benutzen.

Am Beispiel oben mit Kiste, Box etc. erklärt wäre, wenn man von Box aus auf die Variable second zugreifen will:
der relative Pfad: _parent.second
der absolute Pfad: _root.Kiste.second

Das selbe in Grün ist wenn man von Kiste aus auf die Variable third zugreifen will:
der relative Pfad: Box.third
der absolute Pfad: _root.Kiste.Box.third

sancho
 
Zurück