我在Adobe的Flex 4(ActionScript 3的)的函數,它接受一個對象,並返回一個ArrayCollection ...在ActionScript創建延遲3個功能
如果某個全局變量設置爲true,我想要的功能在運行之前延遲3秒。否則,我希望該功能正常運行。
的問題是,如果我用一個定時器,該定時器調用單獨功能,以及任何函數不能返回我的調用函數,也不能調用函數接受任何參數,所以它不喜歡我可以在TimerComplete事件觸發後遞歸地調用我自己的函數...並且遞歸調用將不起作用,因爲它會將ArrayCollection返回到定時器結果函數,而不是返回原始調用函數...
I需要延遲以內的這個函數,而不是延遲,導致我超出這個函數。但我無法弄清楚如何去做。
像這樣的東西是什麼,我需要做的:
private function createArrayCollection(myObject:Object):ArrayCollection {
var myArrayCollection:ArrayCollection = new ArrayCollection();
if (globalWaitBoolean) {
//delay here for 3 seconds, somehow
}
//Here I do the stuff that uses the info in myObject to figure out what to
//put into the ArrayCollection I want to return
return (myArrayCollection);
}
所以......關於如何做到這一點,而無需調用外部定時器功能無法返回一個對象回到我原來的功能,任何想法?
感謝,
是的,不幸的是,無法完成正確的方式,因爲調用者程序是一個Adobe AIR程序,如果不在數百臺客戶機上更新它,我無法更改它 - 程序調用的函數在「模塊「只有一個客戶端遇到問題,因此爲一個客戶端修改模塊要比爲數百個客戶端修改AIR應用程序要容易得多。因此,我需要這種荒謬的,不正確的編程實踐,使它只爲這個客戶工作。非常感謝您的答覆 - 這正是我所期待的。 –
哦 - 僅供參考,如果我在while循環中添加一行說this.ValidateNow(),我認爲它可能實際上允許與程序交互,而它正在等待定時器通過。至少,我會嘗試一下,看看會發生什麼。即使它將程序鎖定3秒鐘,也只有一個客戶端會遇到這個問題,而且每隔一段時間就會遇到一次。 –
@LaurenceMacNeill不,它不會。 Flash應用程序對AS3腳本有一個執行線程,所以在遍歷這個空循環時它不會做任何事情。 – Organis