刚才主影片的程序代码,然后如以下程序代码作修改:
以下内容为程序代码:
#initclip //建构函式 BallClass = function () { this.initBall(); }; //继承MovieClip类 MovieClip.prototype = new MovieClip(); //定义方法 BallClass.prototype.initBall = function() { var speed = 10; var dir = random(360)*Math.PI/180; this.xdir = Math.cos(dir)*speed; this.ydir = Math.sin(dir)*speed; this.onEnterFrame=this.moveBall; }; BallClass.prototype.moveBall = function() { var x = this._x; var y = this._y; x += this.xdir; y += this.ydir; if ((x<0 and this.xdir<0) or (x>292 and this.xdir>0)) { this.xdir *= -1; x = (x<0) ? 0 : 292; } else if ((y<0 and this.ydir<0) or (y>292 and this.ydir>0)) { this.ydir *= -1; y = (y<0) ? 0 : 292; } this._x = x; this._y = y; }; //将BallClass类与Movie Clip元件相关联 Object.registerClass("ball",BallClass); #endinitclip |
在元件库里Movie Clip ball旁按右键选”连结”,如图所示
勾选”Exprot for ActionScript”,取消勾选”Export in first fame”,识别名称输入ball.这样BallClass类便可以跟此元件相关联,所有此元件在舞台的Movie Clip实体,也就是BallClass实体.修改后可以测试影片.
特点分析: 在Flash MX时,这是普遍面向对像程序设计的做法,写成的粒子组件,在重用性,封装性等上都已经达到Flash面向对象程序设计的要求.唯一缺点是Prototype Based的面向对象程序设计不是业界习惯,所以到Flash MX 2004就有了ActionScript 2.0.
5.ActionScript 2.0类 粒子运动系统以ActionScript 2.0重写,面向对象概念跟ActionScript 1.0没有分别,只是方法上不同.
开发步骤: 基于上面的源程序的修改.将Movie Clip ball图层script删除.在元件库里Movie Clip ball旁按右键选”连结”,输入AS 2.0类为BallClass,这步骤已经等于Object.registerClass(“ball”,BallClass);
建立一个名为BallClass.as的文件,加入程序代码:
以下内容为程序代码:
//继承MovieClip类 class BallClass extends MovieClip { //属性 private var xdir:Number; private var ydir:Number; //建构函式 function BallClass() { initBall(); } //方法 private function initBall():Void { var speed = 10; var dir = random(360)*Math.PI/180; xdir = Math.cos(dir)*speed; ydir = Math.sin(dir)*speed; onEnterFrame = this.moveBall; } private function moveBall():Void { var x = _x; var y = _y; x += xdir; y += ydir; if ((x<0 and xdir<0) or (x>292 and xdir>0)) { xdir *= -1; x = (x<0) ? 0 : 292; } else if ((y<0 and ydir<0) or (y>292 and ydir>0)) { ydir *= -1; y = (y<0) ? 0 : 292; } _x = x; _y = y; } } | 完成后可以测试影片(记得以Flash 6/7 ActionScript 2.0发布).
特点分析: ActionScript 1.0的类,如果没有名称领域,都是在_root建立 ,ActionScript 2.0的类,则在_global建立,而且自行处理好名称领域问题. 从以上各例子一步步的演变,可以看到无论面向对象程序设计语法是如何改变,最核心控制粒子随机移动的程序都是大同小异的,而且面向对象程序设计概念是不变的.因此Flash MX面向对象程序设计新手要从全域函数到程序设计ActionScript 2.0是没有障碍的,学了面向对象程序设计概念,学了ActionScript 2.0方法,就应该踏出尝试第一步.
注:本站只作个人研究,转贴请注明出处
关键词:对象 |