我在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