2014-09-01 117 views
-1

我想知道如何使用休眠/等待系統裏面AS3功能,而無需在一次暫停的整個項目,這裏是如何我通常做:等待/睡眠內部功能

function doubleBoom():void 
{ 
    boom(); 
    setTimeout(boom, 1);// calls boom after a 1 second delay 
} 

這裏就是我想這樣做:

function doubleBoom():void 
{ 
    boom(); 
    wait(1);// this function doesn't exist, that's what im trying to solve 
    boom(); 
} 

這種方法會對我的許多優點,例如增加可讀性,讓我和內聯延遲功能。它基於觸發編輯器魔獸爭霸3世界編輯器

回答

2

由於在AS3中只能有一個線程,因此無法在不停止整個項目的情況下實現這一目標。有許多事情(例如從網絡加載東西)可以以異步方式完成,但是如果您的特定操作不支持異步操作,那麼使用計時器是最好的方法。

可以編寫一個封裝類來封裝定時器處理,這樣就不需要多次寫定時器代碼。你可以編寫類似RepeatTaskManager這樣的函數來執行函數對象,該函數所需的任何參數,函數的連續調用之間的延遲以及要調用該函數的次數。這樣你就可以只在一個地方使用定時器代碼,並且只要你需要這種功能就可以輕鬆使用RepeatTaskManager

+0

投票下來,因爲這不回答問題,正確的答案:不可能的。 – BotMaster 2014-09-01 19:54:20

+1

@BotMaster您是否錯過了「沒有辦法**而無法停止整個項目」的部分?我的第一行清楚地表明它不可能。答案的其餘部分只是指出一種可能的方法來輕鬆管理定時器代碼,如果您有許多這樣的代碼,這可能很有用。 – taskinoor 2014-09-01 20:34:07