Actionscript 3 当我按下一个按钮时,我如何在舞台上移动一个电影剪辑?
我又一次在为我所在的班级做一个项目,我很难根据我按下按钮的时间来确定如何让我的棍子(movieclip)向左或向右移动。目前我所做的是,当按下箭头键时,木棍人会播放“行走”动画,但我希望他也能移动!这是我的 有人建议我在按下按钮时使用计时器事件来触发,并使用该功能来替换他,但我在编码时遇到了一些问题Actionscript 3 当我按下一个按钮时,我如何在舞台上移动一个电影剪辑?,actionscript-3,movieclip,keyboard-events,Actionscript 3,Movieclip,Keyboard Events,我又一次在为我所在的班级做一个项目,我很难根据我按下按钮的时间来确定如何让我的棍子(movieclip)向左或向右移动。目前我所做的是,当按下箭头键时,木棍人会播放“行走”动画,但我希望他也能移动!这是我的 有人建议我在按下按钮时使用计时器事件来触发,并使用该功能来替换他,但我在编码时遇到了一些问题 import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.utils.Timer; import flash
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.utils.Timer;
import flash.events.TimerEvent;
stop();
var isReady:Boolean=new Boolean();
isReady = true;
var timerWalkLeft:Timer = new Timer(100);
function walkLeft(e:TimerEvent)
{
stickMan.x ++;
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyIsDown);
function keyIsDown(event:KeyboardEvent)
{
if (isReady==false)
{
return;
}
else
{
var key:uint = event.keyCode;
switch (key)
{
case Keyboard.LEFT :
stickMan.gotoAndStop("left");
walkLeft();
break;
case Keyboard.RIGHT :
stickMan.gotoAndStop("right");
break;
case Keyboard.UP :
stickMan.gotoAndStop("jump")
break;
case Keyboard.DOWN :
stickMan.gotoAndStop("crouch");
break;
}
}
}
使用一些动画库,而不是处理计时器,这更容易,请看这里: 这是我的方式:
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.utils.Timer;
import flash.events.TimerEvent;
stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyIsDown);
var isReady:Boolean = true;// learn shortcuts like that, I don't know your useless teacher but "= new Boolean();" is the same thing as "= false;" or even simpler ";" (false being the default value for boolean type)
var timerWalk:Timer = new Timer(100);
timerWalk.addEventListener(TimerEvent.TIMER, movementLoop);
timerWalk.start();
function movementLoop(e:TimerEvent = null)
{
var mc:* = stickMan;
if(dir == "left")
mc.x--;
else if(dir == "right")
mc.x++;
}
function keyIsDown(event:KeyboardEvent)
{
if(!isReady)// literally "if not isReady"
return;
var key:uint = event.keyCode;
switch (key)
{
case Keyboard.LEFT :
stickMan.gotoAndStop("left");
dir = "left";
break;
case Keyboard.RIGHT :
stickMan.gotoAndStop("right");
dir = "right";
break;
}
}
这比我拥有的要好得多,但在动画停止后它仍会继续移动。有什么想法吗?一种方法:你可以给你所有的stickman动画贴上标签(从时间线开始),然后把“if(dir==“left”)”改为“if(dir==“left”&&mc.currentlabel==“runningleft”)