Flash as3 addEventListener事件监听传递参数
var sayHello:String = "how are you";
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);
}
其实发消息的时候传参数在2.0里面是很方便的,但3.0里面要去写一个类去继承Event这个类,感觉麻烦了许多,在我学习3.0的初期一直不是很理解到了3.0为什么变复杂了,所以刚开始经常会用到扩展Event这个类,但到后来发现只要程序的架构写好了,这种方法是可有可无了,不过今天还是要讲解这种方法的使用.
我们先写一个继承Event的类:
package net.smilecn{
import flash.events.Event;
public class MyEvent extends Event{
private var _object:Object;
public function MyEvent(type:String,object:Object):void{
super(type);
_object=object;
}
public function get param():Object {
return _object;
}
}
}
这个一个很简单的类,继承了Event这个类,在构造方法里有一个super(type),super的意思是执行父类的构造方法,也就是执行Event的构造,type是消息的类型,就是消息的名字,一个字符串,object就是我们要传的参数要用到的一个变量,是一个对象,我们知道对象是很方便的,可以存储1到多个参数,下面是一个GET方法,通过param这个名字去取_object这个对像的值.
再来看一下怎么用这个MyEvent类,修改上一节中的文件;MyClass:
package net.smilecn{
import flash.display.Sprite;
import flash.events.MouseEvent;
import net.smilecn.MyEvent;
public class MyClass extends Sprite{
public function MyClass(){
addEventListener(MouseEvent.CLICK,clickHnadler);
}
private function clickHnadler(event:MouseEvent):void{
dispatchEvent(new MyEvent("myClassMessage",{a:100,b:200}));
}
}
}
我们发现修改代码并不多,由new Event变成了net MyEvent,也就是说以前发的消息是as自带的Event事件,现在发的是我们自己写的MyEvent事件,再看参数还有一个{a:100,b:200},这个参数就是我们传进去的对象,这个对象有两个属性值,一个叫a,值为100,一个叫b,值为200;
再来看文档类:
package net.smilecn{
import flash.display.Sprite;
import net.smilecn.MyEvent;
import net.smilecn.MyClass;
public class MainForm extends Sprite{
private var myClass:MyClass;
public function MainForm(){
myClass = new MyClass();
addChild(myClass);
myClass.addEventListener("myClassMessage",myClassMessageHandler);
}
private function myClassMessageHandler(event:MyEvent):void{
trace("你收到了myClass的消息:a="+event.param.a+" b="+event.param.b);
}
}
}
文档类中修改的地方是侦听到消息后执行的方法,我们发现参数的类型变成了MyEvent,因为我们发的是MyEvent的事件,这里收到事件的类型当然是MyEvent,在event.param就是去取MYEevent_object,就是我们在MyClass传过的对象了,event.param.a的值就是100,event.param.b的值就是200,这样我们就达到了传递参数的目的了。
分享到:
相关推荐
为解决这一问题,可以在全局函数中将事件对象作为参数传递,这样就可以在函数内部通过事件对象访问触发事件的元素。 使用addEventListener方法为元素添加事件监听是推荐的方式,因为它允许为同一个元素的同一个事件...
本篇文章将基于提供的代码片段深入探讨如何在ActionScript中实现监听事件并传递多个参数的功能。 ### ActionScript监听事件传多个参数 #### 一、代码解析 首先来看第一个代码段: ```actionscript public static ...
在ActionScript编程中,事件传递参数是一个非常实用的功能,它允许你在不同的类之间发送自定义消息并附带数据。在本示例中,我们将详细探讨如何在ActionScript 3.0中实现事件参数的传递。 首先,我们创建了一个名为...
首先,`addEventListener`的第一个参数`type`是必需的,表示要监听的事件类型,例如"click"、"mouseover"等。第二个参数`listener`是一个函数,当指定的事件发生时,这个函数会被调用。而第三个参数`useCapture`则是...
在接收页面监听`popstate`事件来获取数据: ```javascript window.addEventListener('popstate', function(event) { var data = event.state; var key = data.key; }); ``` 5. Cookie Cookie是另一种常见的跨...
这里,`element` 是要添加事件监听器的DOM元素,`'onclick'` 是要监听的事件类型,而传递的函数则是事件触发时执行的代码。需要注意的是,`attachEvent` 的事件处理程序会在所有其他已添加的事件处理程序之后运行,...
在AS3中,添加事件监听器主要通过`addEventListener`方法实现。这个方法接收两个参数:一个是事件类型,如`MouseEvent.CLICK`或`Event.ENTER_FRAME`;另一个是处理事件的函数,这个函数将在事件触发时执行。例如,...
在标准事件模型中,事件对象会作为参数传递给事件处理函数,而在IE的事件模型中,事件对象可以通过 `window.event` 访问。因此,当我们编写事件处理函数时,需要考虑到这种差异。例如,以下代码展示了如何在两种环境...
- W3C标准浏览器则是将 `event` 对象作为参数传递给事件监听器函数。 4. **阻止默认行为的差异** - 在IE浏览器中,阻止事件的默认行为需要设置 `Event` 对象的 `returnValue` 属性为 `false`。 - 而在W3C标准...
"可传递参数,根据参数自适应屏幕大小比例,可拖拽"的标题所描述的功能,是一种高级的交互设计技术,它允许开发者通过传递参数来调整元素的显示大小,以适应各种屏幕分辨率,同时提供拖拽功能,增强用户体验。...
然后,你需要监听`moduleComplete`事件,当模块加载完成时,你可以在事件处理函数中访问这些参数: ```actionscript moduleLoader.addEventListener(ModuleEvent.MODULE_COMPLETE, onModuleComplete); function ...
使用 addEventListener 方法时,还可以指定第三个参数 `useCapture`,这个参数是一个布尔值,表示事件监听器是在捕获阶段还是冒泡阶段被调用。如果设置为 `true`,则在捕获阶段调用;如果设置为 `false`,则在冒泡...
可以通过设置`addEventListener`的第三个参数来选择事件处理模式。 此外,还有一些高级事件机制,如事件委托(event delegation),它利用事件冒泡原理,将事件监听器添加到父元素上,从而减少内存消耗和提高性能。...
这种传递方式适用于页面间不涉及服务器交互的情况,如果需要服务端参与,可以考虑使用路由参数或者存储在缓存中来传递数据。在实际项目中,需要注意安全性问题,确保数据在传递过程中的安全性。
`addEventListener()` 是JavaScript中用于添加事件监听器的重要方法,它允许我们为元素绑定特定的事件处理函数。这个方法接收三个参数:事件名称、事件处理函数和一个可选的布尔值 `useCapture`。`useCapture` 参数...
而在原生JavaScript中,开发者需要手动处理更多的细节,比如需要确保在使用`removeEventListener`时,传递的参数必须与`addEventListener`时完全一致,包括事件类型、处理函数以及是否在捕获阶段执行。 事件监听的...
本文将详细介绍如何在AngularJS中为ng-click事件传递参数,并提供示例代码。 在实际开发中,我们经常需要在点击事件中传递特定的参数给控制器中的函数。为了实现这一功能,AngularJS允许我们将参数直接嵌入到ng-...
`addEventListener`是W3C标准的方法,用于向元素添加事件监听器。它接受两个参数:要监听的事件名和回调函数。例如: ```javascript document.getElementById('myButton').addEventListener('click', function() { ...
以上写法尝试在绑定事件时立即执行函数`fun`并传递参数`arg1`、`arg2`和`arg3`,这样会导致函数立即执行,而不会等到click事件发生时执行。正确的方法是需要在事件触发时才调用函数,并且传递相应的参数。 为了解决...