2010-11-13 40 views
0

我想創建自定義事件,並且任何其他類都可以訪問它。 假設我有NavigationMenuClass.as其中包含一些next, prev buttons,另一個類Page.as應該顯示每個nextprev按鈕按下特定頁面。 我需要創建一個自定義事件(將編寫一個EVENTClass.as來管理所有這些類型的事件),並調用"showPage",並且此事件發生時,需要調用Page.as類成員函數。如何觸發ActionScript 3.0中的自定義事件,從另一個類

private function nextPress(event:Event) { 
    //dispatchEvent(new Event("showPage")); 
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage(); 
} 

隨着出通過我怎樣才能調用使用EventEvent Dispatcher方法的具體的成員函數的對象。

回答

5

你似乎有點困惑。

所以,你有一個顯示層次結構,其中你的Page.as顯示對象是NavigationMenuClass.as的父對象,對嗎?

您的NavigationMenuClass應爲'next'和'previous'派遣事件。 Page類應該聽取這些事件並做一些事情。

你的代碼類已經做了調度部分,雖然它被註釋掉了。我會把這在按鈕的點擊處理程序,並用它來分派下一首或上一,事件:

private function nextPress(event:Event) { 
    // dispatchEvent(new Event("showPage")); 
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage(); 
    dispatchEvent(new Event("next")); 
} 

在你Page.as你只需要添加一個事件偵聽器:

navigationMenuClassInstance.addEventListener('next', onNext); 
public function onNext(event:Event):void{ 
    // write code to change content 
} 

您可以使用相同的方法來實現上一個事件。爲了解決您的一些「奇怪的字眼」

的我想創建一個自定義事件,它 會被其它類

訪問,我不知道你訪問的意思。
您可以創建一個擴展Event的自定義事件類,任何其他類都可以使用它,只要它導入它即可。我上面的示例不創建自定義事件類,但使用默認事件類。

在調度方面,該事件僅派遣自己到其父母。如果事件出現泡沫,它將轉到它的父母,然後是父母的父母,等等。

用了傳遞對象哪能 調用特定的成員函數 使用事件和事件調度 方法。

我不確定「傳遞對象」是什麼意思。當您分派事件時,該事件類始終可供事件偵聽器用作該事件偵聽器方法的參數。這就像傳遞一個對象。

1

另外,當遵循Flextras優秀指南時,請確保NavigationMenuClass擴展了EventDispatcher,否則只調用dispatchEvent()方法將不起作用!

+0

它應該拋出一個編譯器錯誤,如果類不擴展EventDispatcher,對不對? – JeffryHouser 2010-11-15 23:55:23

+0

它應該做的! :) – adamk 2010-11-16 13:34:53

相關問題