注册
 找回密码
 注册
江西广告网
查看: 245|回复: 0
打印 上一主题 下一主题

为AS2.0添砖加瓦-编写类扩展(2) (1)

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-22 16:54:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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类. 如图所示进行设置: 然后.返回Layer1,放入这个MC.并命名为Linkage里所取名一样. 现在我们在Layer1的第一帧里写上: [color=red'] [/url] [url=/news/news001/flash/200510/20051017083356_2.html] 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类. 如图所示进行设置: 然后.返回Layer1,放入这个MC.并命名为Linkage里所取名一样. 现在我们在Layer1的第一帧里写上: [color=red'] [/url] [url=/news/news001/flash/200510/20051017083356_2.html] 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写成自己专用的控制引擎. [/url] [url=/news/news001/flash/200510/20051017083356.html] [color=red']
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表