好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

面向对象编程学习5.doc

6页
  • 卖家[上传人]:m****
  • 文档编号:423177456
  • 上传时间:2023-08-28
  • 文档格式:DOC
  • 文档大小:141KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 精品文档】如有侵权,请联系网站删除,仅供学习与交流面向对象编程学习5.....精品文档......面向对象编程学习( 五 )独来读网一事件处理机制一, 自定义事件我们先做一个实例,再说原理,画一个小球,小球的X坐标发生改变,就执行一个函数代码如下://aspackage { 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;//flavar 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; i

      其实这里定义了一个自定义事件,我们象学其它内置方法一样,不知道它的实现过程,也能用它,只要你定义的对象继承了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坐标发生改变,override public function set x(x1:Number):void { super.x=x1; if (isX) { this.dispatchEvent(new Event("changex"));就是调用了:this.dispatchEvent(new Event("changex"));,该方法前面的this就是实例ball,这方法一旦调用,就执行ball.addEventListener("changex",fx);中fx的函数。

      为什么Ball类的实例能有addEventListener ,dispatchEvent方法是因为Ball extends Sprite,Sprite又继承了EventDispatcher类二, 模拟事件机制原理为了能理解这两个方法的原理,现在我们不用它俩,自己写出方法的实现过程建一个事件类,为了不与内置的发生冲突,事件类名为:EventEpackage { public class EventE { public static const CHANGEX:String="changex"; private var _target:Object; private var _type:String; public function EventE(s:String) { _type=s; public function get type():String { return _type; public function get target():Object { return _target; public function set target(m:Object):void { _target=m;Ball类,现在我们不用继承的addEventListener和dispatchEvent方法,为了不发生冲突,分别改为:addEvent和dispatch,下面代码粗体部分,为我们模拟的方法,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; private var fun:Function; private var str:String; 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) { dispatch(new EventE(EventE.CHANGEX)); public function set isChangeX(isX:Boolean):void { this.isX=isX; public function get isChangeX():Boolean { return isX; public function addEvent(s:String,f:Function) { str=s; fun=f; public function dispatch(e:EventE) { if (str==EventE.CHANGEX) { e.target=this; fun(e);//fla,粗体部分,是调用我们定义的方法,与原类只稍做改,var ball:Ball=new Ball(20,0x0000ff);addChild(ball);ball.y=100;var a:Number=0;addEventListener(Event.ENTER_FRAME ,fun);var n:int=0;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; i

      只要执行实例.dispatch(new EventE(EventE.CHANGEX));ff函数就会执行希望上面所述对您有所帮助三, 实例我们计划建一个能加载图片的类,给你一些网址,利用这个类的功能,放入网址返回一个数组,这个数组里的元素就是我们要的图片,并且是显示对象package { import flash.display.Loader; import .URLRequest; import flash.display.Bitmap; import flash.events.Event; import flash.events.Eve。

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.