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

Flash动画制作
FLASH MX 2004右键菜单秀
轻松打造Flash帧速率测试器
Flash制作马赛克效果
一些Flash经验法则
Flash MX 2004 UI组件系列教程(2)
Flash加载外部文件(1)
Flash加载外部文件(4)
Flash MX 2004 UI组件系列教程(6)
Flash MX 2004 UI组件系列教程(5)
Flash MX 2004 UI组件系列教程(7)
Flash MX 2004滚动文本框的两种做法
Flash MX 2004 UI组件系列教程(1)
Flash 8中文版视频教程 滤镜-渐变发光
Flash 8中文版视频教程 滤镜-斜角
Flash 8中文版视频教程 滤镜-渐变斜角
PowerPoint中使用Flash的两点技巧
Flash动画 让其巧妙的设置成桌面上的布景
Flash 8中文版视频教程 滤镜-调整颜色
Flash 8中文版视频教程 绘画-联合
Flash 8中文版视频教程 绘画-裁切

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 87 ::
收藏到网摘: 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写成自己专用的控制引擎.