Apache flex 如何更改flex中的函数执行/确定其优先级?
因此,基本上我有一个已调度事件的组件:Apache flex 如何更改flex中的函数执行/确定其优先级?,apache-flex,actionscript,flex4,mxml,Apache Flex,Actionscript,Flex4,Mxml,因此,基本上我有一个已调度事件的组件: <components:MyComp id="Id" myDispatchedEvent(event)/> 所以问题在于我的静态函数的showConfirmation处理程序,若我通过调试,它只会跳过那个函数,继续执行myDispatchedEvent。为什么showConfirmation函数中的匿名函数不执行? 谢谢函数在调用时执行。就你的情况而言,你刚刚声明了这一点。在Calculate.showConfirmation中的某个地方调用
<components:MyComp id="Id" myDispatchedEvent(event)/>
所以问题在于我的静态函数的showConfirmation处理程序,若我通过调试,它只会跳过那个函数,继续执行myDispatchedEvent。为什么showConfirmation函数中的匿名函数不执行?谢谢函数在调用时执行。就你的情况而言,你刚刚声明了这一点。在
Calculate.showConfirmation
中的某个地方调用此函数,它将被执行
如下所示:
public class Calculate
{
public static function showConfirmation(title:String, func:Function):void
{
// The call I'm talking about is here
func(new Close());
}
}
函数在调用时执行。就你的情况而言,你刚刚声明了这一点。在
Calculate.showConfirmation
中的某个地方调用此函数,它将被执行
如下所示:
public class Calculate
{
public static function showConfirmation(title:String, func:Function):void
{
// The call I'm talking about is here
func(new Close());
}
}
首先让我说你想做的事情很奇怪。我会尝试编写一个不同的解决方案,但这取决于您试图做什么。如果你能告诉我们更多,我们可以找到更好的方法来实现你的目标。顺便说一句,你可以这样做:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"
minHeight="600" minWidth="955">
<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
public static function myFunction(param:String, func:Function):void {
trace("executing");
func.apply();
}
protected function labelx_clickHandler(event:MouseEvent):void {
trace("click");
Tests.myFunction("Test", function():void {
if (event.localX > 0) {
trace("Test");
}
else {
trace("No");
}
});
}
]]>
</fx:Script>
<s:Button id="labelx"
label="Click me"
click="labelx_clickHandler(event)"/>
</s:Application>
0) {
跟踪(“测试”);
}
否则{
痕迹(“否”);
}
});
}
]]>
类似于康斯坦丁纳已经告诉你的。如果不执行作为此静态函数中的参数传递给静态函数的函数,它将不会被执行。首先让我说,您尝试执行的操作非常奇怪。我会尝试编写一个不同的解决方案,但这取决于您试图做什么。如果你能告诉我们更多,我们可以找到更好的方法来实现你的目标。顺便说一句,你可以这样做:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"
minHeight="600" minWidth="955">
<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
public static function myFunction(param:String, func:Function):void {
trace("executing");
func.apply();
}
protected function labelx_clickHandler(event:MouseEvent):void {
trace("click");
Tests.myFunction("Test", function():void {
if (event.localX > 0) {
trace("Test");
}
else {
trace("No");
}
});
}
]]>
</fx:Script>
<s:Button id="labelx"
label="Click me"
click="labelx_clickHandler(event)"/>
</s:Application>
0) {
跟踪(“测试”);
}
否则{
痕迹(“否”);
}
});
}
]]>
类似于康斯坦丁纳已经告诉你的。如果不执行作为此静态函数中的参数传递给静态函数的函数,则不会执行该函数。能否显示调用匿名函数的代码?单从这段代码无法判断它为什么不执行.Calculate.showConfirmation(“字符串标题”,函数(事件:Close):void{if(blablablabla)//大量代码等等……});这就是它被执行的地方。我可以很容易地编写单独的函数,比如:Calculate.showConfirmation(“String Title”,myNewSeparateFunction),没关系,它仍然不会被调用。你能告诉我匿名函数调用的代码吗?单从这段代码无法判断它为什么不执行.Calculate.showConfirmation(“字符串标题”,函数(事件:Close):void{if(blablablabla)//大量代码等等……});这就是它被执行的地方。我可以很容易地编写单独的函数,比如:Calculate.showConfirmation(“String Title”,myNewSeparateFunction),没关系,它仍然不会被调用。你的意思是:Calculate.showConfirmation(“String Title”,myNewSeparateFunction),然后在某个地方:私有函数myNewSeparateFunction(事件:Close):void{//code}我不确定我是否完全理解你的建议。Calculate类具有调用另一个静态函数showConfirmationImpl的showConfirmation函数。我还是不明白为什么没有人打电话给它。它应该类似于myDispatchedEvent(开始)->showConfirmation->showConfirmationImpl->匿名函数->myDispatchedEvent(结束)。但目前情况是这样的:myDispatchedEvent(开始)->myDispatchedEvent(结束)->showConfirmation->showConfirmationImpl->匿名函数。我认为最好将Calculate的列表放在您的问题中。无论如何,我解决了我的问题,尽管该函数稍后仍会执行,但我找到了另一种解决方法,很难解释它。谢谢你们的帮助。我会将您的答案标记为已解决。您的意思是:Calculate.showConfirmation(“字符串标题”,myNewSeparateFunction),然后是某处:private function myNewSeparateFunction(事件:Close):void{//code}?我不确定我是否完全理解您的建议。Calculate类具有调用另一个静态函数showConfirmationImpl的showConfirmation函数。我还是不明白为什么没有人打电话给它。它应该类似于myDispatchedEvent(开始)->showConfirmation->showConfirmationImpl->匿名函数->myDispatchedEvent(结束)。但目前情况是这样的:myDispatchedEvent(开始)->myDispatchedEvent(结束)->showConfirmation->showConfirmationImpl->匿名函数。我认为最好将Calculate的列表放在您的问题中。无论如何,我解决了我的问题,尽管该函数稍后仍会执行,但我找到了另一种解决方法,很难解释它。谢谢你们的帮助。我将把你的答案记为已解决。