不知道为什么我的程序似乎正在跳过某些功能?

时间:2011-02-09 17:41:14

标签: flex function actionscript function-calls function-call

嘿那里, 我对我正在研究的一些Actionscript感到困惑。对于我的GUI,我在计算发生的时候编写了四个函数。这些是showMessage(“正在加载文本...”),disableButtons(),clearMessage()和enableButtons()。他们在整个计划中工作得很好。 ShowMessage显示加载消息,disableButtons禁用按钮,因此没有人可以单击任何内容,clearMessage在作业完成时清除加载消息,并且enableButtons将它们全部重新打开。

由于某种原因,有一个按钮点击处理程序给我带来麻烦,我不知道为什么。我设置它就像其他类似的一样(这一切都有效)但是这个没有显示消息或关闭我的按钮。这是我的clickHandler ......

private function Buffer_Route_clickHandler():void
        {
            showMessage("Loading RBE Options");
            disableButtons();

            if(Buffer_Route.selected && rbeAC.length == 0){
                createRbeAC();
            }
        }

这是creatRbeAC函数......

private function createRbeAC():void
{               
    rbeAC.removeAll();
    hiddenRBELayers.removeAll();

    var rbeIDs:Array = rbeConfigList.getKeySet();
    for each (var rbeID:int in rbeIDs)
    {   
            var rbeConfig:Hashtable = rbeConfigList.find(rbeID) as Hashtable;
        var rbeData:Object = 
        {
            restURL:rbeConfig.find("rbeRESTURL") as String,
            layername:rbeConfig.find("rbeLayerName") as String,
            icon: rbeConfig.find("rbeIcon") as String, 
            titlefield: rbeConfig.find("rbeTitleField") as String,
            checked: rbeConfig.find("rbeChecked") as String,
            count: "0" as String
        };                  
        if(rbeData.checked == "false")
        {                   
            hiddenRBELayers.addItem(rbeData.layername);// as String);
        }
        rbeAC.addItem(rbeData);         
    }
}

我没有收到任何加载文本,所以我从代码中取出了我的clearMessage和enableButtons函数,看它是否正在添加消息并禁用按钮开始。我仍然没有得到任何东西。由于clearMessage和enableButtons无法在此按钮单击处理程序或creatRbeAC函数中找到,因此我无法理解为什么加载消息和按钮未被禁用,即使计算完成也是如此。

有些事情需要注意。如果我注释掉creatRbeAC函数,则显示加载消息并禁用按钮。当creatRbeAC函数在代码中时,几乎就像忽略了那些函数一样。

有任何帮助吗?我将不胜感激。希望我提供了足够的信息。

1 个答案:

答案 0 :(得分:0)

在我的实际应用中,我有类似的问题。 在我的Eventhandler中(没关系,如果有按钮处理程序或鼠标处理程序),我也不想禁用该应用程序并为我的arrayCollection使用一些过滤函数。

不幸的是,这个动作似乎需要太多的资源,特别是当应用程序在调试模式下运行时。我必须为下一次screnn刷新而烦恼。所以我尝试使用

在我的eventhandler中实现“applyFilterMethod”
callLater(applyFilterMethod)

但它也不起作用。

Finally, the setTimeOut(applyFilterMethod,500)

解决了我的问题。所以,如果运气好的话,请尝试使用超时方法。

BR 弗兰克