制作思路: 做一个吃鼠标的MC,如下图所示: 1、设置播放的速度:(Ctrl+M)设置播放速度为20fps。
2、新建一个MC:kiss,在第一帧画出左图图样(注意对准场景中心)。在第5帧插入关键帧,画成右图图样。

3、新建一个mc:mouse,画一个鼠标图样,或者从鼠标的控制面板中抓取。
5、新建一个MC组件:chi。拖入zui组件,同时给该组件赋予一个实例名(instance name):top,安排如下图:红色圆圈内为zui组件的中心,白色圆圈内为场景的中心。
6、新建一个MC组件:bo。拖入组件chi,位置安排如下:x:0,y:0;白色圆圈内为场景中心。这样做的目的是让所有的mc都有一个相同的坐标系。同时给场景中的组建赋予一个实例名(instance name):block。
选中场景中组件,加上AS代码:
onClipEvent (enterFrame) {
bx = _xmouse;
by = _ymouse; //获得当前的鼠标位置
//下面代码是控制吃鼠标的MC的嘴巴的角度,让嘴巴的方向始终对这鼠标
dy = by-_root.bo.block.top._y;
dx = bx-_root.bo.block.top._x;
angle = math.atan(dy/dx);
angle = angle*180/math.PI;
if (dx<0 and dy>0) {
angle = angle-180;
} else {
if (dx<0 and dy<0) {
angle = angle+180;
}
}
_root.bo.block.top._rotation = angle;
//下面代码是控制吃鼠标的MC跟随鼠标运动的速度
speed = bx/10;
speed2 = by/10;
_root.bo.block._x = _root.bo.block._x+speed+2;
_root.bo.block._y = _root.bo.block._y+speed2+2;
//下面代码是鼠标被吃掉的情况,当鼠标和MC的距离在规定的距离内时,鼠标被吃掉
if (Math.abs(_root.bo.block.top._x-bx)<20 or Math.abs(_root.bo.block.top._y-by)<20) {
if (eat==true){
tellTarget ("top") {
mouse.hide(); //使鼠标隐藏
Play(); //播放(即:跑去吃鼠标)
}
eat=false;//这里这样设置表示鼠标已经被吃掉而且没有从嘴里跑出来,就不能再吃了
}
} else {
tellTarget ("top") {
mouse.show(); //使鼠标显现
gotoAndStop(1); //停在第一帧
}
eat=true; //这里这样设置表示鼠标已经从嘴里跑出来,可以吃了
}
}
7、回到Scene 1,把组件bo拖入到场景中,选中组件赋予一个实例名(instance name):bo。所有制作完毕,按Ctrl+Enter进行测试。
附:onClipEvent的用法
onClipEvent (clipEvent) {
statement(s)
}
只能用在影片片段的动作里,clipEvent的可取值为:
load 该影片片段已载入
unload:该影片片段被卸载
data :用loadVariableNum载入数据后或用loadMovie载入影片的每个影片片段后
enterFrame: 播放至该影片片段所在帧(若停在该帧则反复执行)
mouseMove: 鼠标移动
mouseDown :鼠标键按下
mouseUp: 鼠标键松开
keyDown: 键盘键按下
keyUp :键盘键松开
各事件可用逗号分隔,当有一事件成立时就执行statement(s)。
.fla原文件下载学习
共有 0 位网友发表了评论,得分 0 分,平均 0 分 查看完整评论