Sunday, November 8, 2009

Flash教程——跟着鼠标移动的图样

在这里跟大家分享一个制作可以跟着鼠标移动的Flash图案的简单方法。
希望已简化的Action Script可以帮助到各位。

以下为swf原档:


步骤:
1.在Flash视窗空白处画些图案。

2.拖曳鼠标以选择整个图案。

3.选择成功后,在键盘上按Ctrl+G把图案group起来。

4.在图案上点击右滑鼠键,并选择“Convert to Symbol...”。

5.在弹出的Convert to Symbol新视窗的Name一栏内填入“pointer”和Behavior一栏选择“Movie Clip”。

6.在主视窗下的Properties视窗内的“InstanceName”一栏内填入“pointer”。

7.点击主视窗下的Actions-Frame视窗并在drop-down list里选择“Actions for pointer (pointer)”。

8.将以下的程序编码(Action Script)贴在编码编辑处:
onClipEvent (load) {
_root.gotoSpotX;
_root.gotoSpotY;
_root.speed = 0;
}
onClipEvent (enterFrame) {
{
_root.gotoSpotX = _root._xmouse;
_root.gotoSpotY = _root._ymouse;
}
// calculate angle of current position to target position
_root.delta_x = _root.gotoSpotX-_x;
_root.delta_y = _y-_root.gotoSpotY;
_root.targetRotation = Math.atan2(_root.delta_x,_root.delta_y)/(Math.PI/180);
{
_rotation = _root.targetRotation;
}
// move beetle toward the target and stop when it gets there
_root.distance=Math.sqrt((_root.delta_x*_root.delta_x)+(_root.delta_y*_root.delta_y));
if(_root.distance>300)
{
_root.speed=30;
}
else if (_root.distance>200)
{
_root.speed=20;
}
else if(_root.distance>30)
{
_root.speed=10;
}
else
{
_root.speed=0;
}
if (Math.sqrt((_root.delta_x*_root.delta_x)+(_root.delta_y*_root.delta_y))>speed) {
_y -= _root.speed*Math.cos(Math.atan2(_root.delta_x,_root.delta_y));
_x += _root.speed*Math.sin(Math.atan2(_root.delta_x,_root.delta_y));
_root.cos1=Math.cos(Math.atan2(_root.delta_x,_root.delta_y));
_root.sin1=Math.sin(Math.atan2(_root.delta_x,_root.delta_y));
}
}


9.点击Control主菜单的Test Movie或键盘上按Ctrl+Enter来测试成果。大功告成!

No comments:

Post a Comment