Flash面向对象程式设计的演变(3)

2008-04-02 10:54:01来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



  研发步骤:

  基于上面的源程式修改.拷贝主影片时间轴图层script第一帧的程式代码,然后删除图层script.编辑元件库里Movie Clip ball图层script的第一帧,将旧有两行程式代码删除,粘贴刚才主影片的程式代码,然后如以下程式代码作修改:

  


  

  

  

  

  

  
程式代码:


  
#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方法,就应该踏出尝试第一步.

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 关于Mediaplayback组件的快进/快退按钮

下一篇: Flash实用编程四---下雪动画的制作