快速业务通道

Flash面向对象程序设计的演变

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13
就是将原来放在主影片时间轴的全域函数搬到对象里,即放在Movie Clip ball的时间轴里. 开发步骤:
选择主影片图层script第一至第三帧,按右键选”Cut Frames”,如图所示. 编辑元件库里Movie Clip ball,插入帧至3个,增加图层,选择头3个帧,按右键选”Paste Frames”,如图所示.

编辑第1帧的代码,改为以下程序代码:
以下内容为程序代码:
function initBall()
{
var speed = 10;
var dir = random(360)*Math.PI/180;
xdir = Math.cos(dir)*speed;
ydir = Math.sin(dir)*speed;
}
function moveBall()
{
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;
}
initBall();
程序修改主要是删去for循环,以及将路径删去(自己不用路径).修改后可以测试影片. 特点分析:
区域函数和全域函数的不同之外是:
1.程序和图形放在一起,封装性改善了,容易拷贝到另一个地方使用.
2.没有路径考虑,在别的Movie Clip里都可以使用. 不过,区域函数有一个致命问题:虽然区域函数是写在Movie Clip元件里,但是每个Movie Clip实体都会有一套区域函数在自己时间轴里.他们的区域函数其实是完全相同,这么多份区域函数会严重浪费内存. 3.原型(Prototype)扩展
由于所有舞台上的Movie Clip都是MovieClip类的具体表现(唯一可视化的实体),所以在MovieClip类直接加入关于随机移动的方法,所有粒子实体就会有随机移动的方法供调用,避免浪费内存. 原型是ActionScript 1.0中用来建立继承或将自定属性和方法增加到对象中之用.利用关键字”prototype”,为MovieClip类增加两个方法,分别是initBall()和moveBall(). 开发步骤:
基于上面的源程序的修改.主影片时间轴只保留第一帧,新增回图层script,加入扩充MovieClip类方法的程序代码(可以从Movie Clip ball第一帧复制):
以下内容为程序代码:
MovieClip.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;
};
MovieClip.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;
}
程序代码要修改的地方不多,只是加上关键字”this”,代表指向自己的属性.
编辑元件库里Movie Clip ball,只保留第一帧,将程序代码改成:
以下内容为程序代码:
initBall();
this.onEnterFrame=moveBall;
onEnterFrame是Movie Clip其中一个事件,它会根据影片帧速率(Frame Rate)不停执行程序.修改后可以测试影片.
特点分析:
原型扩展虽然避免了重复区域函数浪费内存,但是由于它直接在MovieClip类加入关于随机移动等方法,污染了MovieClip类,因为所有舞台上Movie Clip实体,就算不是粒子,都会有这两个方法. 4.封装成组件
针对原型扩展缺点,正确方法是建立一个新对象(例如:粒子类),并继承MovieClip类.这个做法,在Flash MX时,就是所谓以ActionScript 1.0来进行面向对象程序设计的做法.其实这做法跟开发Flash MX组件是没有分别,换句话说,开发Flash MX组件就是ActionScript 1.0面向对象程序设计的常见情况. 开发步骤:
基于上面的源程序修改.拷贝主影片时间轴图层script第一帧的程序代码,然后删除图层script.编辑元件库里Movie Clip ball图层script的第一帧,将旧有两行程序代码删除,粘贴

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号