2009-12-06 8 views
7

こんにちはすべて私はディスパッチイベントAS3で知りたいです。 私はそれをグーグルにしている間に何も考えなかった。 :( だから、私を助けてくださいFlash AS3のdispatchEventは何ですか?

編集1:

public static const SET_VOLUME:String = "setVolume"; 

private function onclick(evt:MouseEvent):void { 
      soundClip.scaleX = 0; 
      dispatchEvent(new Event(SET_VOLUME)); 

     } 

あなたが派遣する場合、これは??(

+1

@coderex、あなたの質問には、回答時に答えを記入してください! – alecmce

答えて

3

基本的には何かが起こっているオブジェクトを通知する仕組みだ意味ないものを。イベント、何かがそのイベントを聞く必要がある

これは、基本的に電話をかけることです(dispatchEvent(new CallEvent(CallEvent.CALL)))。彼らは電話イベントを聞いていないので、何もできません。それらが(addEventListener(CallEvent.Call、answerHandler))にある場合、彼らはそれに答えることができます、多分それをボイスメールにまっすぐに送ります。

完全に完了するには、adobeからこの記事をお読みください。それにグリップを取得中に、それは非常に価値があるように、プログラミング言語の

http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_02.html

たくさんのイベントを利用します。

ジェームズ

EDIT1へ

応答

あなたがどこかのオブジェクトにMouseEvent.Clickを処理するように設定されているメソッドを持っているようですが、私には見えます。それが起こると、別のオブジェクトのscaleXプロパティが0に設定されます(非表示になります)。新しいイベントは、setVolumeに設定された型で送出されます。これはそれ自身では何もしません。他の場所では、これはおそらくaddEventListener( "setVolume"、doSomethingMethod)のような線です。 。元のメソッドが起動されると(マウスクリックのように)、doSomethingMethodが起動します。

+0

ok私は疑問を持っています。私の質問をチェックしてください。1:section – coderex

+0

onclick()が呼び出されたとき、addEventListenerを呼び出すことで "setVolume"に加入しているすべてのサブスクライバに通知します。 –

14

例が役立ちますか?あなたはフラッシュIDEを持っている場合は、あなたのタイムラインでこれを試してみてください。

var ball:Shape = new Shape(); 
ball.graphics.beginFill(0xFF0000); 
ball.graphics.drawCircle(0, 0, 30); 
ball.graphics.endFill(); 
addChild(ball); 

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener); 
addEventListener("myCustomEvent", myCustomEventListener); 

function mouseMoveListener(event:MouseEvent):void 
{ 
    dispatchEvent(new Event("myCustomEvent")); 
} 

function myCustomEventListener(event:Event):void 
{ 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
} 

これはコードではのaddEventListenerにdispatchEventが対応している方法を示しています。 MOUSE_MOVEイベントが内部的に派遣されて、あなただけは、dispatchEventを使用してMOUSE_MOVEのように、独自のイベントを送出することができます。このコードでは何が起こる

myCustomEventListenerで処理された段階からMOUSE_MOVEが検出されたのではなく、mouseMoveListenerにそれを扱うよりも、あなたは(myCustomEvemtと呼ばれる)別のイベントをディスパッチすることです代わりに。 MOUSE_MOVEイベントのように動作しますが、Flash Playerではなくイベントを送出しただけです。

これが役に立ちます。

4

AとBの2つのクラスがあるとします。今度は、クラスBでmyFunが発生した後にfunctionAfterMyFunを発生させたいとします。次に、クラスBの関数myfun()でdispatchEventを使用します。

class A 
{ 

function A() 
{ 
    objectOfB.addEventListener("myFun_Happened", functionAfterMyFun) 
} 

function functionAfterMyFun() 
{ 
    //do something after myFun has happened in class B 
} 

} 

class B 
{ 
function myfun() 
{ 
dispatchEvent(new Event("myFun_Happened")); 
} 


} 
+0

1067:String型の値を、関連しない型flash.events:Eventに暗黙的に変換します。私はインポートがありませんでしたか? –

+0

ああ申し訳ありませんが、タイプミスがありました。もう一度編集しました。 dispatchEvent(new Event( "myFun_Happened")); –

-1

addaddEventListener()あなたの結婚前同意書を作成するのが好きです。
たとえば、あなたの妻が別の男性を持っている場合、あなたの妻から100ドルを得るでしょう。幸いにも、それは起こります。
dispatchEvent()は、100ドルを得ることを意味します。