-1

我正在做一个关于交互的项目,鼠标在屏幕上,因此,我想通过使用 Adob​​e Flash Pro 和 Action Script2 来完成。这里是任务: - 一个简单的动画(例如:蜘蛛在屏幕上从上到下行走/跳跃) - 一旦鼠标移动,动画将反转(所有蜘蛛动画将反转并隐藏回从来的地方屏幕顶部)。- 如果鼠标在 60 秒后没有移动,动画将再次发生,直到鼠标再次在屏幕上移动(那些蜘蛛动画将再次发生)。

我创建了一个动画蜘蛛“电影剪辑”(蜘蛛动画下降) 1-我应该编写什么脚本来使动画反转?2-我如何告诉 Adob​​e 我的鼠标移动了还是没有移动,所以蜘蛛动画会发生还是反转?

顺便说一句,我是动作脚本 2.0 的初学者,我感谢任何建议和帮助 *我也可以在动作脚本 3 中执行此操作 谢谢。

4

2 回答 2

0

天啊。AS2 :)

好的,首先我认为如果您创建 2 个不同的动画会更容易。一个让蜘蛛走下来。另一个要走上去。可以反转 MovieClip,但我认为如果您是初学者,请坚持使用基础知识。

你需要3个想法。

1) 蜘蛛夹。往下走。2)一个间隔(AS3中的定时器)

var interval:Number = setInterval(spidersComeOut, 60 * 1000);

3) 鼠标移动监听器

root.onMouseMove = function() 
{
    //swap your spider clips
    //move the spider up again
    //reset the interval with clearInterval(interval) and restart it again.        
}

这是一个非常基本的鼠标移动处理程序。希望这会对您有所帮助。这不是一个完整的解决方案。它不会开箱即用。

最后一件事。如果您是 AS2 的新手,我建议您试一试 as3。开始比较困难,但是有更多的人愿意帮助解决 AS3 问题,而不是 as2。

于 2012-05-13T19:29:48.810 回答
0

既然您说您已准备好使用 AS3,这里就是解决方案。

我假设您有一个单独的电影剪辑,其中包含您放置在主时间线/舞台上的蜘蛛动画。

1.将您的MovieClip 放在舞台上,并为其命名为“蜘蛛”。

2.在这个MovieClip里面,在第一帧放这段代码(它会处理动画的反转)

import flash.events.Event;

stop();

var _dir:int = 1;

addEventListener(Event.ENTER_FRAME, onEF);
function onEF(e:Event):void
{
    getNextAnimationFrame();
}

function getNextAnimationFrame():void
{
    var frameNum:int = currentFrame + _dir;
    if (frameNum < 1 || frameNum > totalFrames) 
    {
         removeEventListener(Event.ENTER_FRAME, onEF);
    }
    frameNum = Math.max(1, Math.min(totalFrames,frameNum));

    gotoAndStop(frameNum);
}

function changeDirection($dir:int):void
{
    _dir = $dir;
    removeEventListener(Event.ENTER_FRAME, onEF);
    addEventListener(Event.ENTER_FRAME, onEF);
}

3.在主时间线上(在第一帧)放上这段代码:

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var timer:Timer = new Timer(60 * 1000, 1);
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTime);

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);

function onTime(e:TimerEvent):void
{
    trace("it's time");
    spiders.changeDirection(1);
}

function onMove(e:MouseEvent):void
{
    timer.reset();
    timer.start();
    spiders.changeDirection(-1);
}

可以在一段代码中处理鼠标、计时器和动画,但是它现在的构建方式是一种OOP,如果在某个时候你决定正确构建它,那么将代码“重写”为单独的类。

于 2012-05-14T09:19:28.047 回答