这是高新技术等级考试Flash复习题中的一个问题,我在制作效果时没完全按照原题去做,主要是大家通过这个实例学会“用自定义类实现动画控制”的一些方法就行了。
一、定义类
在文本编辑器中输入以下的类定义代码,保存为:人.as
class人{
//属性定义
var速度:Number=1;
privatevarPersonso:Sound;
publicfunction人(){
Personso=newSound();
}
//移动MC的方法
publicfunction移动(mc:Object,轮:Object,方向:String):Void{
varroot=this;
mc.onEnterFrame=function(){
if(方向=="l"){
if(mc._x<0){
mc._x=Stage.width;//如果已到舞台左边界,就跳到右边
}else{
mc._x-=root.速度;
}
轮._rotation-=root.速度;
}elseif(方向=="r"){
if(mc._x>Stage.width){
mc._x=0;
}else{
mc._x+=root.速度;
}
轮._rotation+=root.速度;
}elseif(方向=="s"){
deletethis.onEnterFrame;//删除onEnterFrame,释放内存
}
};
}
//显示信息的方法
publicfunction信息():String{
return("我们一起来学习Flash!");
}
//挥手的方法
publicfunction挥手(mc:MovieClip,hsx:Boolean):Void{
if(hsx){
mc.gotoAndPlay(2);//挥手
}else{
mc.gotoAndStop(1);//手放下
}
}
//发声的方法
publicfunction发声(sou,口:MovieClip):Void{
Personso.attachSound(sou);//加载库中的声音
Personso.start();
口.play();//发声的同时控制MC“口”的动画
}
}
几点说明:
1、我用了较多的中文变量名,以利理解,所以注释写得少;
2、关于方法(函数)――移动()
有三个参数
移动(mc,轮,方向)
mc要左右移动的影片剪辑MC
轮要让它旋转的影片剪辑
方向用字符串来控制mc的移动方向:“l”向左,“r”向右,“s”停止
3、挥手的动作实质上是MC本身来完成的,函数里只是控制MC跳到相应的帧
4、调用发声方法有两个参数,传入库里链接的声音ID名;口形动作MC的路径和MC名。
二、制作场景上的mc和相关按钮
详情看源文件,以下是源文件第一帧的代码:
varMyPerson=new人();
_root.onEnterFrame=function(){
_root.movv=MyPerson.速度;
}
this.左移.onRelease=function(){
MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"l");
};
this.右移.onRelease=function(){
MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"r");
};
this.停止.onRelease=function(){
MyPerson.移动(_root.Person_mc,_root.Person_mc.车轮,"s");
};
this.加速.onRelease=function(){
if(MyPerson.速度<100){
MyPerson.速度+=1;
}
};
this.减速.onRelease=function(){
if(MyPerson.速度>1){
MyPerson.速度-=1;
}
};
this.信息.onRollOver=function(){
_root.Person_mc.information=MyPerson.信息();
};
this.信息.onRollOut=function(){
_root.Person_mc.information="";
};
this.挥手.onRollOver=function(){
MyPerson.挥手(_root.Person_mc.右手,true);
};
this.挥手.onRollOut=function(){
MyPerson.挥手(_root.Person_mc.右手,false);
};
this.发声.onRelease=function(){
MyPerson.发声("QQ",_root.Person_mc.head);
};
这是被人骂得狗血淋头的帖子,有人说:屁大一个动作,写了N长的AS。
没办法,我就这水平了!
当然,单纯从实现效果来说,应该很简单,没必要写这么多的AS,可是,这是一个题:
1、定义“类”,存为AS文件。在类里实现点击相应按钮时:
1)人的左右移动 2)挥手动作 3)发声 4)动态文本信息显示等功能(动作)
2、制作相应按钮,制作Person_mc实例MC,并把头、身、左手、右手、左脚、右脚和动态文本框放入Person_mc。
口型的动作和下面轮子的动作是我加的,原题里没有。
这个例子并不是为了一个效果,而是为了学习“类”的一个实验。
看了一下,屁大一个动作,写了N长的AS,确实得改一下,请各位赐教!非常感谢!