MouseListener

TOBITULPI

Mitglied
Wie schreib ichs meinem Forum?

Also, ich hab da einen movieclip, in dem zwei MouseListener liegen. der eine onMouseUp, initiert den anderen onMouseMove, und dann fängt halt diese Abfrage an. klappt prima.

Jetzt das Problem: besagten MC lade ich in einen anderen Clip, und auf ein mal initiert sich der MouseMove von ganz allein! Kennt Ihr sowas?

PHP:
//hier der Schnipsel aus dem einen:

var mouseListener:Object = new Object();
mouseListener.onMouseUp = function() {
	Mouse.addListener(mousa);
};

mousa = new Object();
mousa.onMouseMove = function() {
	lauta = Math.abs(10 ...
...}
Mouse.addListener(mouseListener);

PHP:
//hier lad ichs rein...

ton._lockroot = true;
loadMovie("quarks.swf", "ton");

hab auch versucht Variablen zu übergeben, funzte auch nicht :(

T
 
Hi,

Du solltest - besonders, wenn Du einen Listener mehrmals (hier immer beim MouseUp) hinzufügst - nicht mehr gebrauchte Listener mit "removeListener" entfernen, sonst erstickst Du irgendwann in Listenern (die Dinger werden nämlich nicht einfach überschrieben, wenn Du einen "identischen" hinzufügst, sondern häufen sich an).

Gruß
.
 
Jaj, ist gut, mach ich, löst allerdings nicht das Problem!
Also, da laufen zwei Soundkanäle gleichzeitig, und der Zweite, soll ab dem MouseUp aktiv werden, In dem MouseMove ist die Lautstärkereglung abhängig zur Position des Zeigers.

Wie gesagt, dass klappt alles fein! Nur wenn ich das Dingen in den anderen Mc lade, dann springt die Lautstärkereglung schon an obwohl der Listener noch gar nicht da ist.

Das Problem liegt also mehr beim reinladen in den andern MC. Das _lockroot hab ich irgendwo gelesen, dann spielte Flash die Sounds erst ab, was es genau macht weiss ich aber auch nicht. könnte daran liegen?

Die Mouselistener sind auch nur einmal vorhanden.
Ich weiss es nicht!
 
... dann poste bitte mal beide beteiligte Dateien (.fla). Aus Deinem Ausschnitt kann ich das Problem nicht ganz ersehen (der Mouselistener wird, so wie er da steht, dennoch mehrmals definiert). ;)

Gruß
.
 
:suspekt:
Oh Datic, hast ja wie immer recht, es lag an den gleichnamigen Restfunktionen die da noch so rumschwirren. Ich hab mir nun gedacht, ich muß wohl alles aus dem MC löschen, nu find ich den richtigen Syntax zum löschen nicht.

PHP:
on (release) {
	for (var name in _root.ton) {
		delete _root.ton.name;
		trace(name);
	}
	nextFrame();
}

Hab ne abgespeckte Version mit besonders beliebten Sounds mal beigefügt. der Fehler ist im Arrangetuto.fla, andere Fehler sind eher rudimentär.
Ich hoffe Ihr versteht mein AS Kauderwelsch da.

Interessant, finde ich auch das unterschiedliche Verhalten hinsichtlich der Koordinaten, wenn man die Dateien im Flash previewed oder im Iexplorer.

Grüße, und Danke
T
 

Anhänge

  • sounds.zip
    75,2 KB · Aufrufe: 20
Hi,

auch wenn ich noch nicht völlig durchsteige (auf den ersten Blick bekomme ich den Eindruck, Du würdest es Dir erheblich vereinfachen, wenn Du die Soundsteuerung im Hauptfilm bzw. als Prototype-Methoden definieren würdest), kann ich Dich auf ein paar Fehler aufmerksam machen:

tuto.fla und tuto1.fla hat gesagt.:
_global.iv = setInterval(fadein, 50);
tuto.fla und tuto1.fla hat gesagt.:
_root.snd.my_ch1 = new Sound(snd);
Globale Variablen sind auf jeden Fall global und halten sich m.E. nicht an Dinge wie _lockroot. So bekommst Du z.B. überlappende und nicht löschbare Intervalle, wenn Du den Film wechselst, ohne das Intervall im anderen zu entfernen.

arrangetuto.fla hat gesagt.:
ton._lockroot = true;
loadMovie("tuto1.swf", "ton")
Durch das Überschreiben des MC "ton" löschst Du auch die gesetzte "lockroot"-Eigenschaft, wodurch sich Aufrufe von _root wieder auf die Hauptzeitleiste beziehen. _lockroot solltest Du immer im ersten Frame des zu ladenden Filmes definieren.

arrangetuto.fla hat gesagt.:
on (release) {
for (var name in _root.ton) {
delete _root.ton.name;
trace(name);
}
Mit delete löschst Du zwar Objekte, nicht aber Mouselistener (die nur per removeListener entfernt werden können) - welchselst Du nun zwischen den beiden Filmen, erstickst Du nach wie vor in Mouselistenern...

Gruß
.
 
Ok, hat sich erledigt, Danke schön. mein Problem war das ich den Kram halt überhaupt nicht von der externen Datei aus gelöscht bekommen hab, weder mit delete noch mit removeListener. Funktioniert hat dann irgendwie nur, die remove Anweisung als Funktion in den Unterflas zu definieren, und dann von dem Hauptfla aus die remove(); Funktion aufzurufen. Seltsam, aber so gings.

Du hast Prototypes angesprochen, hab in den FAQs da ein Beispiel gefunden, wußte abe nix damit anzufangen, was sind denn PTs?

liebe Grüße
T

Mann, ist heut wieder schönes Wetter!
 

Neue Beiträge

Zurück