今天在flex里通过addEventListener函数给控件动态加载click事件侦听函数时,除了事件本身传递的Event类型参数外,还需要传递更多的参数,在网上找了一段代码,用起来还不错,张贴到这里。
package
{
public class EventArgExtend
{
public function EventArgExtend()
{
}
public static function create(f:Function,... arg):Function
{
var F:Boolean=false;
var _f:Function=function(e:*,..._arg)
{
_arg=arg
if(!F)
{
F=true
_arg.unshift(e)
}
f.apply(null,_arg)
};
return _f;
}
public static function toString():String
{
return "Class JEventDelegate";
}
}
}
使用的方式:
txtShow.addEventListener(MouseEvent.CLICK,EventArgExtend.create(clickHandler,1,"str"));
private function clickHandler(e:Event,...arg):void
{
Alert.show(arg[0].toString());
Alert.show(arg[1].toString());
}
还有另外一个方法,没有封装效果,不过代码更加容易理解:
var sayHello:String = "欢迎光临www.FlashJ.cn -Flash,Ria技术博客";
btn1.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,sayHello)});
function clickHandlerWithArg(e:MouseEvent,arg:String):void
{
var out:String= e.target + "发出事件(有参数) :" + arg;
trace(out);
}
分享到:
相关推荐
在Flex编程中,有时我们需要从外部HTML容器向SWF文件传递参数,这在构建富互联网应用程序(RIA)时尤其常见。这些参数通常是以URL查询字符串的形式出现,例如`test.html?name=jex&address=chengdu`。在本文中,我们...
然后,你需要监听`moduleComplete`事件,当模块加载完成时,你可以在事件处理函数中访问这些参数: ```actionscript moduleLoader.addEventListener(ModuleEvent.MODULE_COMPLETE, onModuleComplete); function ...
可以使用`addEventListener()`方法,传入自定义事件的类型、监听函数和可选的捕获阶段参数。 5. **处理事件** - 监听函数将被调用,当自定义事件被派发时。在这个函数中,你可以访问事件对象来获取事件相关的数据...
`MainForm`构造函数中,`_btn1`的点击事件被添加了一个事件侦听器`btnClickHandler`。当`_btn1`被点击时,`btnClickHandler`会被调用,并且在该处理函数内部,事件侦听器的添加和移除操作会发生。具体来说,`_btn1`...
在Flex程序中,获取HTML容器传递的URL参数值,通常涉及到三个关键步骤:从HTML中获取URL参数、使用JavaScript进行中间处理、以及在ActionScript中接收这些参数。这一过程不仅展示了Flex与HTML之间的交互机制,也体现...
压缩包中的"函数交互调用demo"很可能是包含一个或多个AS文件的项目,展示了如何在Flex应用中进行函数间的参数传递。具体的实现方式可能包括事件监听、回调函数、类方法调用等。通过阅读和分析这些代码,可以更好地...
事件处理函数接收一个事件参数,从中可以获取事件的相关信息。 4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析...
3. **多参数传递**:由于ActionScript中的事件处理函数通常只接受一个参数——事件对象,因此如果想要向事件处理器传递额外的信息,则需要借助一些技巧。上述示例中的`create`函数就是一种解决方案,它可以灵活地将...
2. **事件委托**:利用事件冒泡原理,通过在父元素上设置一个事件侦听器来处理子元素的事件,减少内存占用和性能消耗。 3. **事件阻止和默认行为处理**:可能包含阻止事件传播(`event.stopPropagation()`)或阻止...
Flex的事件调度机制确保了事件的有序处理,避免了多个事件同时处理的混乱情况。 10. 滚动事件和数据改变事件: 对于列表和数据网格等控件,滚动事件(ScrollEvent.SCROLL)允许我们对用户滚动行为作出反应,而...
例如,我们可以为 `Button` 组件的 `click` 事件添加一个处理函数,如 `clickHandler`,并在函数签名中传递 `event` 参数。这个 `event` 参数是一个事件对象,它包含了与事件相关的详细信息,如事件类型、源对象等。...
4. **call、apply、bind方法中**:这三个函数可以显式地设置this的值,call和apply立即调用函数,bind返回一个新的函数,这个新的函数的this值被固定为传入的参数。 在事件处理函数中,this的值通常取决于事件监听...
当需要一个事件触发时执行多个函数,单纯地使用`window.onload`或元素的`onclick`等事件处理方式可能会遇到问题,特别是在需要同时处理多个事件处理器时。这时,`window.attachEvent`和`window.addEventListener`就...
事件侦听器通过`addEventListener`方法解决了这个问题,允许为同一事件添加多个处理函数,使得代码更加灵活。 `addEventListener`方法的基本语法如下: ```javascript element.addEventListener("事件类型", 事件...
Flex使用事件驱动模型,当发生特定情况(如用户点击按钮或数据改变)时,会触发一个事件。事件模型由三个核心部分组成:事件、事件监听器和事件流。事件是特定情况的抽象表示;事件监听器是处理事件的方法;事件流...
本文将详细介绍在form提交时传递额外参数的几种常见方法,并分析各自的优缺点,供开发者根据实际需求进行选择。 1. 在表单里使用隐藏的input元素 这是最简单也是最直接的方法。可以在表单HTML代码中直接添加一个...
当一个事件被触发时,它会从根节点开始向下传递,直到到达实际产生事件的目标对象,并且沿途检查是否有相应的事件监听器。例如,在下面的代码片段中,如果`VBox`组件发生了`resize`事件,则事件流会从根节点`...
4. **事件参数**:每个事件都带有相关的参数,这些参数可以提供关于事件的详细信息。例如,`MouseEvent`的`localX`和`localY`属性可以获取鼠标点击相对于组件的位置。 5. **事件冒泡**:默认情况下,事件会沿着组件...
在描述的问题中,开发者遇到了在`click`事件处理函数中传递多个参数的困扰。例如,尝试在`addEventListener`或`attachEvent`中直接传递参数的方式都是无效的,因为它们只会接收一个函数作为参数,而不会自动包含传递...