2011-09-13 16 views
0

我的意思是,有沒有辦法在AS3,或在一般的編程(PHP,JS等),使一個事件觸發/激活「什麼」什麼事情做某事,反對一個if/else if/else語句?例如,我想在一個幀標籤被擊中時做出一個事件觸發/激活,之後,做一些其他的事情等等,基本上使它根據某些目標是什麼時候一行一行地做事情。滿足。是否有一個「何時」類型的聲明等將這樣做反對if/else如果等?在編程中是否存在「何時」與if/else等相對?

例如,使用上面的例子,而不是我做這樣的事情:

Code: 
xyz.addEventListener(Event.ENTER_FRAME/or INIT , btn); 

function btn(e:Event):void{ 
    if (externalSwf.currentFrameLabel == " label here "){ 
      do something code here. 
    } 

} 

是有辦法做到這一點是這樣的:

Code: 
xyz.addEventListener(Event.ENTER_FRAME/or INIT , btn); 

function btn(e:Event):void{ 
    when (externalSwf.currentFrameLabel == " label here "){ 
      do this. 


      when (this happens){ 
     do this next 
} 
    } 

} 

等等

如何才能做到這一點?

我想問的原因是因爲我有一個項目即時通訊工作(外部swfs代碼的平滑過渡),部分工作,但我不能爲我的生活,找出如何實現像我有什麼結構以上。

本質上是我說的是,我不需要條件我需要..確定...如果這是有道理的大聲笑。

希望它不會混淆。

任何提示的想法等我欣然欣賞。

謝謝。

+0

聽起來就像你需要保存某種狀態一樣,事件的進展已經走了多遠。 (並且狀態轉換將由eventhandlers觸發)。 – Thilo

+3

我沒有看到正常的'if'和'when'關鍵字之間的區別。你可以添加一個如何表現不同的例子嗎? – Kapep

+0

我認爲他希望'when'的行爲如下:「返回控制流,但一旦滿足這個新條件就回來」。 – Thilo

回答

0

如果你想要做的事,當值的某些屬性的一些物體(例如prop)(例如延長EventDispatcherExample),你應該在prop seter拋出事件。所以,我建議像下面這樣的東西

class Example1 extends Example { 
    public static var eventName = "event_name"; 
    //var prop is declared in Example class 
    public function setProp(val: string) { 
     prop = val; 
     if (prop == "some_value") { 
      dispatchEvent(new flah.events.Event(eventName)); 
     } 
    } 

    public function init() { 
     addEventListener(eventName, handler); 
    } 

    private function handler(e: Event) { 
     //do whatever you like here 
    } 
} 

嗯,我想你快點我的想法。希望能幫助你!

2

您正在尋找的東西已經通過活動完成。例如,當即將呈現新幀時,事件觸發。那麼你可以檢查如果該幀有一個特定的標籤。

對於框架標籤示例,您可以創建一個自定義偵聽器,該偵聽器僅在需要的幀上觸發。在這種情況下,您的when塊將是一個回調函數。

frameLabelEventDispatcher.addEventListener("label here", whenLabel); 

function whenLabel() { /* do something */ } 
相關問題