2009-12-06 17 views
7

Xin chào tất cả những gì tôi muốn biết là gì dispatchEvent trong AS3. Tôi không nhận được bất kỳ ý tưởng nào trong khi Googling nó. :( Vì vậy, hãy giúp tôidispatchEvent trong Flash AS3 là gì?

Sửa 1:

public static const SET_VOLUME:String = "setVolume"; 

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

     } 

điều này có nghĩa là ?? (

+1

@coderex, Vui lòng đánh dấu câu hỏi của bạn là đã trả lời khi chúng được trả lời! – alecmce

Trả lời

3

Về cơ bản nó là một cơ chế để thông báo cho đối tượng rằng một cái gì đó đã xảy ra Khi bạn gửi một. sự kiện, một cái gì đó cần phải lắng nghe cho sự kiện đó

Về cơ bản giống như thực hiện cuộc gọi điện thoại (dispatchEvent (new CallEvent (CallEvent.CALL)). Nếu người bạn đang cố gắng ing không có trong, họ không nghe sự kiện điện thoại, vì vậy họ không thể làm bất cứ điều gì về nó. Nếu họ đang ở trong (addEventListener (CallEvent.Call, answerHandler)), họ có thể trả lời nó, có thể gửi thẳng đến thư thoại.

Để biết tóm tắt đầy đủ, hãy thử đọc bài viết này từ adobe.

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

Rất nhiều ngôn ngữ lập trình sử dụng các sự kiện do đó, nó rất có giá trị trong khi nhận được để hiểu thấu với nó.

James

Response to Edit1

Có vẻ với tôi như bạn có một phương pháp đã được thành lập để xử lý một MouseEvent.Click trên một số đối tượng ở đâu đó. Khi điều đó xảy ra, nó sẽ đặt một đối tượng scaleX khác thành 0 (làm cho nó vô hình). Sự kiện mới sau đó được Gửi với loại được đặt thành "setVolume". Điều này trên riêng của nó sẽ không làm bất cứ điều gì. Một nơi nào khác đây có lẽ là một dòng trông giống như addEventListener ("setVolume", doSomethingMethod); . Khi phương thức ban đầu được kích hoạt (dường như là một cú click chuột), doSomethingMethod sẽ kích hoạt.

+0

ok tôi có một nghi ngờ xin vui lòng kiểm tra câu hỏi của tôi chỉnh sửa 1: phần – coderex

+0

Khi onclick() được gọi là "setVolume" sẽ được nâng lên, thông báo cho bất kỳ thuê bao (đăng ký "setVolume" bằng cách gọi addEventListener). –

14

Ví dụ có thể hữu ích? Nếu bạn có Flash IDE, hãy thử này trên dòng thời gian:

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

Đây là mã thể hiện như thế nào addEventListenerdispatchEvent là đối tác. Sự kiện MOUSE_MOVE được gửi đi nội bộ, nhưng bạn có thể gửi các sự kiện của riêng mình giống như MOUSE_MOVE bằng cách sử dụng dispatchEvent.

gì sẽ xảy ra trong mã này là một MOUSE_MOVE từ giai đoạn được phát hiện, nhưng thay vì xử lý rằng trong mouseMoveListener, bạn cử một sự kiện (gọi tắt là myCustomEvemt) được xử lý trong myCustomEventListener thay thế. Nó hoạt động giống như sự kiện MOUSE_MOVE, chỉ bạn mới gửi sự kiện thay vì trình phát flash.

Hy vọng điều này sẽ hữu ích.

4

Giả sử có hai lớp: A và B. Bây giờ bạn muốn rằng "functionAfterMyFun" sẽ xảy ra sau khi myFun đã xảy ra trong lớp B. Sau đó, bạn sẽ sử dụng dispatchEvent trong lớp B của hàm 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: Ngụ ý ngầm định về một giá trị kiểu String thành một loại không liên quan flash.events:Event. :(Tôi có thiếu thông tin nhập không? –

+0

xin lỗi, đã có lỗi đánh máy. Tôi chỉ chỉnh sửa lại lần nữa dispatchEvent (new Event ("myFun_Happened")); –

-1

addaddEventListener() giống như thực hiện thỏa thuận tiền hôn nhân của bạn.
Ví dụ, nếu vợ của bạn có một người đàn ông bên ngoài, bạn sẽ nhận được $ 100 từ vợ của bạn.F May mắn thay, điều đó xảy ra.
dispatchEvent() có nghĩa là bạn sẽ nhận được 100 đô la.