当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > 为AS2.0添砖加瓦-编写类扩展(2)

Flash动画制作
Flash 3d效果精彩实例(5)
贺新年 制作五彩缤纷焰火动画
FlashMX2004中的XML应用之原理篇
制作一个骄艳的鲜花情人Flash贺卡
有趣 用Flash制作互动的小人
Flash制作鸡年新春动画贺卡
Flash MX 2004 UI组件系列教程(3)
Flash加载外部文件(5)
Flash MX 2004 UI组件系列教程(4)
Flash加载外部文件(2)
Flash加载外部文件(3)
一个最简便的代码实现任意数字和0的来回跳转
让Flash课件中测试题信手拈来
MX中如何实现swf文件的完美跳转
三分钟理解Flash中的级别关系
flash与ASP通信的几种方法
flashMX2004视频插件的应用教程
如何做好一个多人配合的flash项目
AS计算方面的错误
如何防止SWF文件被反编译

Flash动画制作 中的 为AS2.0添砖加瓦-编写类扩展(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 104 ::
收藏到网摘: n/a

MX2004 as2.0制作一个控制移动的类


新建一个as文件,存为moveclass.as


class moveclass extends MovieClip
//定义这个类为MovieClip扩展类:
{
var speed:Number;
var w:Number;
var h:Number;
//定义三个变量分别为速度,移动边界宽,移动边界长
function move_ctrl(w:Number,h:Number,speed:Number)
//写一个有三个变量的move_ctrl方法,用于控制MovieClip;
{

if(Key.isDown(Key.RIGHT)) //得到方向键的确定
{

this._x +=speed; //MovieClip向X轴移动speed位置
this._rotation = 90;//转向
if(this._x > w) //判断是否超过边界宽
{
this._x = w;
}

}

//下面同上进行方向键判断
if(Key.isDown(Key.LEFT ))
{
this._x -=speed;
this._rotation = 270;
if(this._x < 0)
{
this._x = 0;
}

}
if(Key.isDown(Key.UP))
{
this._y -=speed;
this._rotation = 0;
if(this._y < 0)
{
this._y = 0;
}

}
if(Key.isDown(Key.DOWN))
{
this._y +=speed;
this._rotation = 180;
if(this._y > h)
{
this._y = h;
}

}

//微调方向,小转弯.
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.DOWN)) {
this._rotation = 315;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.DOWN)) {
this._rotation = 45;
}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.UP)) {
this._rotation = 225;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN) && !Key.isDown(Key.LEFT) && !Key.isDown(Key.UP)) {
this._rotation = 135;
}

}
}



然后建立一个fla,在里面建立一个MovieClip,比如汽车等要移动的物体.
Ctrl+L.调出库,点这个MC,按右键,选择Linkage,用于把这个MC扩展
成CLASS类.

如图所示进行设置:
click for full size

click for full size

然后.返回Layer1,放入这个MC.并命名为Linkage里所取名一样.

click for full size

现在我们在Layer1的第一帧里写上:

    


car.onEnterFrame = function() {
car.move_ctrl(300,200,10);
}

就可以调用这个设置好的扩展类及其方法:
只要写上3个参数变量就行

也可以先设定变量或者和输入文本框.如:

speed =5;
w = Stage.width;
h = Stage.height;
car.onEnterFrame = function() {
car.move_ctrl(w,h,speed);
}


flash6.0做这样一个移动控制也很方便.可以参考FLASH6.0里的帮助文件也有一个汽车控制
但是7.0的AS2.0的目的.是能够把代码和FLA尽量分开写.脚本被作为一个Class类.可以更好
的多重利用.修改扩展脚本更方便.

这个例子很简单.只是介绍一下AS2.0和AS.10的区别,其实可以写得更复杂一点.比如更好的
控制微调.做FLASH游戏的高手甚至可以把这个CLASS写成自己专用的控制引擎.