2016-11-23 18 views
2

Adob​​e Animate CC 2017を使用して、ムービークリップ付きのHTML5キャンバスを作成しました。このクリップには円で回転するボタンがあります。Adob​​e Animate - MouseOverの外側のムービークリップを制御する

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

私はあなたが何度回転を停止するクリップのロール時に強調表示するためのボタンをしたいと思います。しかし、私はそれはそれはMouseClickと(ビッグ・ベン、一例)上だけで正常に動作し

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

function fl_MouseOverHandler_4() 
{ 

    this.parent.stop(); 

} 

だけでマウスオーバー(エッフェル塔、例)で動作し得ることができません。

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

function fl_MouseClickHandler_4() 
{ 
    this.parent.stop(); 
} 

アラートボックスをトリガーするコードを追加すると、MouseOverで機能します(例:自由状態)。しかし、アラートボックスのコードを削除すると、再び破損します。

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(); 
} 

私はActionScriptで長年働いていません。私は間違って何をしていますか?ロールオーバー時にクリップの回転を停止するボタンを取得するにはどうすればよいですか?

ご協力いただきありがとうございます。私はここに私の髪を引き出しています。

+0

:問題は、同様に適切this変数を調整するために、他のハンドラ:)などのbind()メソッドを呼び出すことです! – someOne

+0

編集していただきありがとうございます。私はタグからActionscriptを取り出した。非常に感謝しています。 – Trinidad

答えて

0

あなたはあるコード調査場合は "うまく作業を!":

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

あなたはbind()方法に気づかされます:bind()メソッドは、新しいを作成

関数が呼び出されると、thisキーワードが指定された値に設定されます。

したがって、「クリック」ハンドラがトリガされると(すなわち、 fl_MouseClickHandler_4())、関数内で使用されているthisはムービークリップをポイントしていると思われます。 ながら、それは正しく他のハンドラで「予期しない」HTMLウィンドウオブジェクトを指しています(あなたがbind()メソッドを使用してthisオブジェクトの参照を調整していない。)

ので、一つの方法で解決しますしかし、アドビアニメイトでHTML5-キャンバスドキュメント・タイプ、JavaScriptではなく、ActionScriptであなたのコードについて

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

これは完璧に機能しました!どうもありがとうございます! – Trinidad

関連する問題