Apache flex 火花总线指示灯不工作
我有一个繁忙的功能需要几秒钟才能执行。在函数的顶部,我将忙碌指示器设置为可见,在底部,我将其设置为不可见。但在执行该功能时,显示不变,且“忙碌”指示灯不出现。下面是代码结构Apache flex 火花总线指示灯不工作,apache-flex,busyindicator,Apache Flex,Busyindicator,我有一个繁忙的功能需要几秒钟才能执行。在函数的顶部,我将忙碌指示器设置为可见,在底部,我将其设置为不可见。但在执行该功能时,显示不变,且“忙碌”指示灯不出现。下面是代码结构 public function busyFunction():void{ busyIndicator.visible=true; 多斯塔夫..//需要几秒钟 busyIndicator.visible=false; } 我只希望第一行(busyIndicator.visible=true)在执行doStuff时执行 关于问题
public function busyFunction():void{
busyIndicator.visible=true;
多斯塔夫..//需要几秒钟
busyIndicator.visible=false;
}
我只希望第一行(busyIndicator.visible=true
)在执行doStuff
时执行
关于问题是因为在方法执行时Flex不会重新绘制屏幕。因此,您可以使忙碌指示器可见、执行操作并隐藏指示器。但是屏幕还没有更新,所以指示器永远不会显示 Flex“elastic racetrack”范例基本上说,你的应用程序由两个周期组成,一个是执行逻辑,另一个是更新屏幕。因此,您需要将忙碌指示器设置为可见,然后在至少一个更新周期后使其消失 要使这类工作正常,您需要异步执行
doStuff()
。执行此操作的某些代码可能如下所示:
private function startDoingStuff():void
{
busyIndicator.visible = true;
// dispatch "doStuff" event
dispatchEvent(new Event("doStuff"));
return; // returning here is important don't do stuff here
}
private function onDoStuff(e:Event):void
{
// do stuff;
busyIndicator.visible = false;
}
另一个想法是使用Flex的callLater()
方法来执行doStuff()
方法。这应保证在下一个周期执行doStuff()
:
private function startDoingStuff():void
{
busyIndicator.visible = true;
callLater(onDoStuff);
}
private function onDoStuff():void
{
// do stuff
busyIndicator.visible = false;
}
嘿,Sunil,首先谢谢你,但是在实现callLater方法之后,我遇到了同样的情况。忙指示灯被该功能隐藏。如何在提供的第一个选项中传递参数?my doStuff(j:int)采用如下参数..@user2415906要使用第一个选项传递参数,您必须创建自己的类来扩展
事件
,并将此类属性添加到事件中。但是,如果callLater()
方法不起作用,这不太可能起作用。@user2415906也许作为一个故障排除步骤,您可以通过从不使忙指示灯不可见并让它保持在屏幕上来确保忙指示灯起作用。另外,您可以尝试使用callLater()
两次。使用doStuff()
末尾的callLater()
调用另一个函数,该函数仅隐藏忙碌指示器。。。真是个黑客,祝你好运!