2016-11-23 4 views
2

Ich habe HTML5-Canvas mit Movieclip mit Adobe Animate CC 2017 erstellt. Dieser Clip hat Schaltflächen, die sich in einem Kreis drehen.Adobe Animate - Steuern außerhalb von MovieClips auf MouseOver

Beispiel: http://trinidadpena.com/testing/animate/MS_Holiday_2016.html

Ich möchte die die Tasten markieren, wenn Sie über und für den Clip rollen mehr dreht. Aber ich kann sie nicht arbeiten nur Mouseover (Eiffelturm, Beispiel)

var frequency = 3; 
stage.enableMouseOver(frequency); 
this.eiffel_tower.addEventListener("mouseover", fl_MouseOverHandler_4); 

function fl_MouseOverHandler_4() 
{ 

    this.parent.stop(); 

} 

Es funktioniert gut auf Mouseclick (big ben, Beispiel).

Es funktioniert auf MouseOver, wenn ich Code zum Auslösen einer Alarmbox (Stand der Freiheit, Beispiel) hinzufügen. Aber es bricht wieder, wenn ich den Code der Alarmbox lösche.

var frequency = 3; 
stage.enableMouseOver(frequency); 
this.stat_of_lib.addEventListener("mouseover", fl_MouseOverHandler_5); 

function fl_MouseOverHandler_5() 
{ 

    alert("Moused over"); 
    this.parent.stop(); 
} 

Ich habe seit langer Zeit nicht in ActionScript gearbeitet. Was mache ich falsch? Wie kann ich mit den Schaltflächen die Drehung der Clips beim Rollover stoppen?

Vielen Dank im Voraus für Ihre Hilfe! Ich ziehe mir hier die Haare aus.

+0

Für die HTML5-Canvas-Dokument-Typen in Adobe Animieren Sie Code in JavaScript, um nicht in Actionscript, obwohl ! – someOne

+0

Danke für die Bearbeitung. Ich nahm Actionscript aus den Tags. Viel geschätzt. – Trinidad

Antwort

0

Wenn Sie den Code Umfrage, dass "funktioniert ganz gut!" Ist:

this.big_ben.addEventListener("click", fl_MouseClickHandler_4.bind(this)); 

Sie zum bind() Methode bemerkt werde:

Die bind() Methode erstellt ein neues Funktion, die, wenn sie aufgerufen wird, ihr this Schlüsselwort auf den angegebenen Wert gesetzt hat.

Wenn also der "Klick" -Handler ausgelöst wird (d. H. die fl_MouseClickHandler_4() Funktion), die this, innerhalb der Funktion verwendet, würde voraussichtlich auf den Movieclip zeigen - wodurch es "zu stoppen"; während es richtig in den anderen Handler auf das „unerwartete“ HTML-Fenster-Objekt zeigt (wo man nicht die Referenz des this Objekts neu einstellen muß, mit der bind() Methode.)

also eine Möglichkeit, das zu lösen Problem ist in ähnlicher Weise die bind() Verfahren auf den anderen Handler rufen in geeigneter Weise die this Variable einzustellen :) zB:

this.eiffel_tower.addEventListener("mouseover", fl_MouseOverHandler_4.bind(this)); 
+1

Das hat perfekt funktioniert! Ich danke dir sehr! – Trinidad

Verwandte Themen