2009-12-06 3 views
7

Привет всем Я хочу знать, что такое dispatchEvent in AS3. Я понятия не имел, в то время как Googling это. :( Так что, пожалуйста, помогите мнеЧто такое отправка в Flash AS3?

Edit 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 (новый CallEvent (CallEvent.CALL))). Если человек, которого вы пытаетесь сделать, ing не входит, они не слушают телефонное событие, поэтому они ничего не могут с этим поделать. Если они находятся (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 У меня есть одно сомнение, пожалуйста, проверьте мои вопросы. Edit 1: section – coderex

+0

Когда onclick() называется «setVolume», он будет поднят, уведомляя подписчиков (подписчиков на «setVolume», вызвав addEventListener). –

14

Примером может помочь? Если у вас есть Flash 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 отправлено внутренне, но вы можете отправлять свои собственные события точно так же, как MOUSE_MOVE, используя dispatchEvent.

Что происходит в этом коде является то, что MOUSE_MOVE со сцены обнаружена, но вместо того, справиться с этим в mouseMoveListener, вы посылаете еще одно событие (называемое myCustomEvemt), который обрабатывается в myCustomEventListener вместо. Он работает так же, как событие MOUSE_MOVE, только вы отправили событие вместо флеш-плеера.

Надеюсь, это поможет.

4

Скажем, существуют два класса: A и B. Теперь вы хотите, чтобы «functionAfterMyFun» возникла после того, как myFun произошел в классе B. Затем вы будете использовать dispatchEvent в функции класса myfun().

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 (новое событие («myFun_Happened»)); –

-1

addaddEventListener(), как сделать свой брачный договор.
Например, если у вашей жены есть другой человек на улице, вы получите 100 долларов от своей жены. Или к счастью, это происходит.
dispatchEvent() означает, что вы получите 100 долларов США.