面向对象编程学习5.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象编程学习5

面向对象编程学习 ( 五 ) 独来读网一 事件处理机制 自定义事件 我们先做一个实例,再说原理,画一个小球,小球的X坐标发生改变,就执行一个函数 代码如下: //as package { import flash.display.Sprite; import flash.events.Event; public class Ball extends Sprite { private var radius:Number private var color:uint; private var isX:Boolean; public function Ball(r:Number=30,c:uint=0xff0000) { radius=r; color=c; init(); } private function init():void { graphics.beginGradientFill(radial,[0xffffff,color],[1,1],[0,radius*3]); graphics.drawCircle(0,0,radius); graphics.endFill(); } override public function set x(x1:Number):void { super.x=x1; if (isX) { dispatchEvent(new Event(changex)); } } public function set isChangeX(isX:Boolean):void { this.isX=isX; } public function get isChangeX():Boolean { return isX; } } } //fla var ball:Ball=new Ball(20,0x0000ff); addChild(ball); ball.y=100; var a:Number=0; var n:int=0; addEventListener(Event.ENTER_FRAME ,fun); function fun(e:Event) { if ((n%40)20) { ball.x=275+Math.cos(a)*150; a+=0.05; } n++; } var num:int=20; var ang:Number=0; var arr:Array=[]; for (var i:int=0; inum; i++) { var mc:Sprite=new Ball(10,0xff0000); addChild(mc); arr.push(mc); } ball.isChangeX=true; ball.addEventListener(changex,fx); function fx(e:Event) { for (var i:int=0; inum; i++) { arr[i].x=275+Math.cos(i*2*Math.PI/num+ang)*80; arr[i].y=250+Math.sin(i*2*Math.PI/num+ang)*80; } ang+=1; } 在上面的代码中,画出小球和x属性覆盖可能好理解,不好理解的是:后面ball的x坐标发生一次改变,fx就执行一次函数,x坐标不断发生改变,fx函数就不执行。其实这里定义了一个自定义事件,我们象学其它内置方法一样,不知道它的实现过程,也能用它, 只要你定义的对象继承了EventDispatcher类和复合了EventDispatcher对象或实现IEventDispatcher接口了,因为EventDispatcher类和IEventDispatcher接口中定义了二个方法,分别是:addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void(今天只说前面两个参数)和dispatchEvent(event:Event):Boolean) 这二个方法联合使用时的要求如下: 方法1和方法2是实例对象的两个方法,可在不同的环境中,分别执行,这样就能很好地控制“要执行的函数listener”的执行的时机。先执行方法1,那么什么时候执行方法2,就什么时候执行“要执行的函数listener”。那相同的字符串就是我们平时说的事件类型。 在上面的实例中,实例的x坐标发生改

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档