动作脚本2建议

时间:2012-05-10 13:49:08

标签: actionscript-3 flash actionscript actionscript-2

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

我创建了一个动画蜘蛛“电影剪辑”(蜘蛛动画向下) 1-我应该写什么脚本让动画反转? 2-我怎么能告诉Adobe我的鼠标被移动或者它没有移动,所以蜘蛛动画会发生还是反转?

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

2 个答案:

答案 0 :(得分: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一个机会。开始时比较困难,但是有更多的人愿意用as2来帮助解决AS3问题。

答案 1 :(得分: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,如果在某些时候你决定正确构建它会非常容易将此代码“重写”为单独的类。