Actionscript 鼠标移动时激活循环
我只想解释一下上下文,这样就更清楚了 我做了这个菜单: 我正在寻找一个改进和更先进的版本相同的菜单 我制作了咖啡表面波浪的动画,希望在鼠标移动时使其循环,在鼠标不移动时停止循环 很抱歉缺少规范,因为我对actionscript很陌生,但我希望有人能帮助我。:) 谢谢,Actionscript 鼠标移动时激活循环,actionscript,loops,menu,mouse,move,Actionscript,Loops,Menu,Mouse,Move,我只想解释一下上下文,这样就更清楚了 我做了这个菜单: 我正在寻找一个改进和更先进的版本相同的菜单 我制作了咖啡表面波浪的动画,希望在鼠标移动时使其循环,在鼠标不移动时停止循环 很抱歉缺少规范,因为我对actionscript很陌生,但我希望有人能帮助我。:) 谢谢, Mathieu好吧,你说过了-利用MouseEvent.MOUSE\u MOVE在循环例程中设置一个条件 private var _isMoving:Boolean = false; stage.addEvent
Mathieu好吧,你说过了-利用MouseEvent.MOUSE\u MOVE在循环例程中设置一个条件
private var _isMoving:Boolean = false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, checkMouse);
this.addEventListener(Event.ENTER_FRAME, doLoop);
private function checkMouse(e:MouseEvent):void
{
_isMoving = true;
}
private function doLoop(e:Event):void
{
trace("moving =" + _isMoving);
if(_isMoving)
{
// loop animation
}
_isMoving = false;
}
根据您希望它如何工作,我将按如下方式进行:
- 请注意,默认情况下剪辑是循环的,因此您所要做的就是匹配第一帧和最后一帧!
- 双击图形进行编辑
- 将循环动画的实例从库拖动到图形的“边”上
- 或者用一个循环的动画图形替换整个浅棕色图形
public function init():void {
menuClip.addEventListener(MouseEvent.MOUSE_OVER, onMenuRollOver);
menuClip.addEventListener(MouseEvent.MOUSE_OUT, onMenuRollOut);
}
public function onMenuRollOver(event:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
/* do the stuff you're currently doing to animate the clip here.
something like: coffee graphic height = ease to mouseHeight */
}
public function onMenuRollOut(event:MouseEvent):void {
/* do the stuff you're currently doing to stop the clip here. */
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
coffeeClip.stop();
}
public function onMove(event:MouseEvent):void {
resetTimer();
coffeeClip.play(); //note: play has no effect when movie is playing (that's ideal in this case)
}
public function resetTimer():void {
if(mouseMovementTimer == null) createTimer();
mouseMovementTimer.reset();
mouseMovementTimer.start();
}
public function createTimer():Timer {
mouseMovementTimer = new Timer(DELAY, 1); //fiddle with the delay variable. Try 500, at first
mouseMovementTimer.addEventListener(TimerEvent.TIMER, stopAnimationLoop);
}
public function stopAnimationLoop(event:TimerEvent):void {
mouseMovementTimer.removeEventListener(TimerEvent.TIMER, stopAnimationLoop); //optional but recommended
mouseMovementTimer = null;
coffeClip.stop();
}
当然,您需要执行一些操作,如调用init()
和导入flash.utils.Timer
,以及初始化mouseMovementTimer、menuClip、coffeeClip和DELAY等变量
警告:此代码在我的脑海中消失,未经测试。因此,其中可能存在一些小错误,但您应该了解总体思路:
- 当用户将鼠标移到菜单上时,添加鼠标侦听器
- 如果用户将鼠标移出菜单,请删除该侦听器
- 让那个听众播放循环播放的电影剪辑
- 触发一个事件,该事件将在一段时间内未检测到移动时停止循环剪辑
- 一旦触发,停止剪辑
~gmale你说的循环是什么意思?反复播放动画或让动画在连续运动中上下移动?你需要考虑一个轻松的停止和开始点-但这可能是其核心。。。