5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:山东
性别:先生
最后登录:2011-01-05
http://xbzg.5d.cn/
专注于Flash+FMS开发...通过Google搜索西部之光Software
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/02/21 | 体验AS3.0(九)
类别(Flash)
|
评论
(0)
|
阅读(193)
|
发表于 17:28
在我们上个例子中,我们已经看到,我们现在已经使用addEventHandler来代替原来的onRelease。乍看起来,这样做比以前好象复杂了许多,但如果你接着往下看下一个复杂的例子的话,你将体会到这样做的好处。
我们要建立一个表格,整个表格将响应mouseUp事件,每个小格将响应新增的ReleaseEvent事件。
package {
import flash.events.Event;
import flash.events.MouseEventType;
import flash.util.trace;
import flash.display.Sprite;
public class Test extends Sprite{
public function Test() {
for( var i:int = 0; i<10; i++){
for( var j:int=0; j<10; j++){
var mc:Sprite= new Test2(i,j);
this.addChild( mc);
}
}
this.addEventListener("Release", releaseListener);
}
public function releaseListener( evt:Event){
trace( "Test1::releaseListener " + evt);
}
}
private class Test2 extends Sprite{
private var i:int;
private var j:int;
public function Test2(i:int, j:int){
this.i = i;
this.j = j;
graphics.beginFill(0xff0000);
graphics.drawRect(0, 0, 10, 10);
graphics.endFill();
x = i * 11;
y = j * 11;
this.addEventListener(MouseEventType.MOUSE_UP, mouseUpListener);
}
public override function toString():String{
return '[Test2 i=' + i + ' j=' + j + ']';
}
public function mouseUpListener( evt:Event){
trace( "Test2::mouseUpListener " + evt);
//we don't want this event to bubble up
evt.stopPropagation();
//instead we create a new event and dispatch it
this.dispatchEvent( new ReleaseEvent( this));
}
}
private class ReleaseEvent extends Event {
private var source:Test2;
public function ReleaseEvent( source:Test2){
super("Release", true, true);
this.source = source;
}
public override function toString():String{
return '[Event type="Release" bubbles=true '
+ 'cancelable=true source="' + source + '"]"';
}
}
}
我们再也不用一个一个地分派事件了,这就为我们在运行时分派事件提供了可能性,新的事件机制在MovieClips 和components通用,我们现在只要学会这一种方法就足够了。
请注意一下新的关键字"override",当你需要重写继承来的方法时,你需要用到它。
0
评论
Comments
日志分类
首页
[186]
Flash
[84]
FMS
[41]
AIR
[2]
ASP
[11]
作品区
[12]
其他
[36]