当前位置:  开发笔记 > 编程语言 > 正文

Flex使用没有参数的回调函数添加事件侦听器

如何解决《Flex使用没有参数的回调函数添加事件侦听器》经验,为你挑选了1个好方法。

原因是在mxml中你写的东西实际上并不是处理程序,而是在处理程序中执行的内容.如果您有-keep产生-动作标志编译(设置它在Flex Builder中点击鼠标右键,打开项目属性,选择Flex编译器,并添加-keep产生的,动作的附加编译器参数),你可以在看生成的组件源,编译器为该事件创建了一个处理程序,而body由您在mxml中编写的组成.

所以如果你有类似的东西:

click="doSomething();"

你已经注意到你实际上在那里给出了一个指令,这不是你使用addEventHandler时传递的方法引用.

那么你将在生成的文件中有类似的东西:

private function myComponent_Click(evt : MouseEvent) : void
{
    doSomething();
}

在同一文件的其他地方添加事件监听器:

this.addEventListener(MouseEvent.CLICK, myComponent_Click);

注意第二个参数不是函数结果,它是一个函数引用,因为缺少表示函数调用的括号,我们的特定函数也不是getter.

您还可以在mxml中指定更多调用,例如:

click="doSomething(); doSomethingElse();"

您甚至可以将event参数传递给您的方法:

click="doSomething(event);"

无论你在mxml事件的值中写什么(不确定它是否正确使用)都将成为actionscript事件生成的处理程序的主体.



1> bug-a-lot..:

原因是在mxml中你写的东西实际上并不是处理程序,而是在处理程序中执行的内容.如果您有-keep产生-动作标志编译(设置它在Flex Builder中点击鼠标右键,打开项目属性,选择Flex编译器,并添加-keep产生的,动作的附加编译器参数),你可以在看生成的组件源,编译器为该事件创建了一个处理程序,而body由您在mxml中编写的组成.

所以如果你有类似的东西:

click="doSomething();"

你已经注意到你实际上在那里给出了一个指令,这不是你使用addEventHandler时传递的方法引用.

那么你将在生成的文件中有类似的东西:

private function myComponent_Click(evt : MouseEvent) : void
{
    doSomething();
}

在同一文件的其他地方添加事件监听器:

this.addEventListener(MouseEvent.CLICK, myComponent_Click);

注意第二个参数不是函数结果,它是一个函数引用,因为缺少表示函数调用的括号,我们的特定函数也不是getter.

您还可以在mxml中指定更多调用,例如:

click="doSomething(); doSomethingElse();"

您甚至可以将event参数传递给您的方法:

click="doSomething(event);"

无论你在mxml事件的值中写什么(不确定它是否正确使用)都将成为actionscript事件生成的处理程序的主体.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有