`

Flex addEventListener增加事件侦听函数时传递多个参数

    博客分类:
  • Flex
阅读更多

今天在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);
} 

 

 

 

分享到:
评论
1 楼 yunan246 2011-11-14  
怎么remove掉啊?没有函数名,只有addEventListener,明摆着要内存泄漏。

相关推荐

    flex获得html容器传递的url参数值

    在Flex编程中,有时我们需要从外部HTML容器向SWF文件传递参数,这在构建富互联网应用程序(RIA)时尤其常见。这些参数通常是以URL查询字符串的形式出现,例如`test.html?name=jex&address=chengdu`。在本文中,我们...

    flex中moduleLoader加载module时传递参数源代码

    然后,你需要监听`moduleComplete`事件,当模块加载完成时,你可以在事件处理函数中访问这些参数: ```actionscript moduleLoader.addEventListener(ModuleEvent.MODULE_COMPLETE, onModuleComplete); function ...

    flex4自定义事件用法

    可以使用`addEventListener()`方法,传入自定义事件的类型、监听函数和可选的捕获阶段参数。 5. **处理事件** - 监听函数将被调用,当自定义事件被派发时。在这个函数中,你可以访问事件对象来获取事件相关的数据...

    第六节 事件侦听.docx

    `MainForm`构造函数中,`_btn1`的点击事件被添加了一个事件侦听器`btnClickHandler`。当`_btn1`被点击时,`btnClickHandler`会被调用,并且在该处理函数内部,事件侦听器的添加和移除操作会发生。具体来说,`_btn1`...

    Flex程序如何获取html容器传递的URL参数值

    在Flex程序中,获取HTML容器传递的URL参数值,通常涉及到三个关键步骤:从HTML中获取URL参数、使用JavaScript进行中间处理、以及在ActionScript中接收这些参数。这一过程不仅展示了Flex与HTML之间的交互机制,也体现...

    Flex中函数传值调用Demo

    压缩包中的"函数交互调用demo"很可能是包含一个或多个AS文件的项目,展示了如何在Flex应用中进行函数间的参数传递。具体的实现方式可能包括事件监听、回调函数、类方法调用等。通过阅读和分析这些代码,可以更好地...

    flex自定义组件事件DEMO

    事件处理函数接收一个事件参数,从中可以获取事件的相关信息。 4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析...

    Actionscript监听事件传多个参数

    3. **多参数传递**:由于ActionScript中的事件处理函数通常只接受一个参数——事件对象,因此如果想要向事件处理器传递额外的信息,则需要借助一些技巧。上述示例中的`create`函数就是一种解决方案,它可以灵活地将...

    非常小且简单的工具类用于将事件侦听器绑定到元素

    2. **事件委托**:利用事件冒泡原理,通过在父元素上设置一个事件侦听器来处理子元素的事件,减少内存占用和性能消耗。 3. **事件阻止和默认行为处理**:可能包含阻止事件传播(`event.stopPropagation()`)或阻止...

    flex控件事件

    Flex的事件调度机制确保了事件的有序处理,避免了多个事件同时处理的混乱情况。 10. 滚动事件和数据改变事件: 对于列表和数据网格等控件,滚动事件(ScrollEvent.SCROLL)允许我们对用户滚动行为作出反应,而...

    事件处理函数的this

    4. **call、apply、bind方法中**:这三个函数可以显式地设置this的值,call和apply立即调用函数,bind返回一个新的函数,这个新的函数的this值被固定为传入的参数。 在事件处理函数中,this的值通常取决于事件监听...

    window.addEventListener来解决让一个js事件执行多个函数

    当需要一个事件触发时执行多个函数,单纯地使用`window.onload`或元素的`onclick`等事件处理方式可能会遇到问题,特别是在需要同时处理多个事件处理器时。这时,`window.attachEvent`和`window.addEventListener`就...

    javascript事件侦听器

    事件侦听器通过`addEventListener`方法解决了这个问题,允许为同一事件添加多个处理函数,使得代码更加灵活。 `addEventListener`方法的基本语法如下: ```javascript element.addEventListener("事件类型", 事件...

    flex 关于事件的例子

    Flex使用事件驱动模型,当发生特定情况(如用户点击按钮或数据改变)时,会触发一个事件。事件模型由三个核心部分组成:事件、事件监听器和事件流。事件是特定情况的抽象表示;事件监听器是处理事件的方法;事件流...

    Flex事件机制详细说明

    当一个事件被触发时,它会从根节点开始向下传递,直到到达实际产生事件的目标对象,并且沿途检查是否有相应的事件监听器。例如,在下面的代码片段中,如果`VBox`组件发生了`resize`事件,则事件流会从根节点`...

    关于flex事件的讲解

    4. **事件参数**:每个事件都带有相关的参数,这些参数可以提供关于事件的详细信息。例如,`MouseEvent`的`localX`和`localY`属性可以获取鼠标点击相对于组件的位置。 5. **事件冒泡**:默认情况下,事件会沿着组件...

    Flex 事件机制,flex入门学习

    例如,我们可以为 `Button` 组件的 `click` 事件添加一个处理函数,如 `clickHandler`,并在函数签名中传递 `event` 参数。这个 `event` 参数是一个事件对象,它包含了与事件相关的详细信息,如事件类型、源对象等。...

    关于javaScript注册click大事传递参数的不胜利问题_.docx

    在描述的问题中,开发者遇到了在`click`事件处理函数中传递多个参数的困扰。例如,尝试在`addEventListener`或`attachEvent`中直接传递参数的方式都是无效的,因为它们只会接收一个函数作为参数,而不会自动包含传递...

    在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。

    这个事件处理函数的特点是它在每个对象上只会执行一次,类似于JavaScript的`addEventListener`方法的第三个参数为`once`时的效果。此外,它还提及了如何阻止浏览器的默认行为以及如何控制事件的冒泡。 1. **事件...

Global site tag (gtag.js) - Google Analytics