首先,很遗憾地问这个愚蠢的问题(我是AS3的新人)。我在这个问题上浪费了超过2周的时间,现在我将它发布在这里。
我正在用键盘让英雄移动。我有三个动画。
到目前为止它运作良好,但是我在跳跃玩家时面临的问题是必须按住键才能跳跃。我不希望玩家需要按住键才能进行跳跃。 所以我想用一键按下播放完整的MovieClip,说实话,我不知道我必须使用哪种功能或如何操作。
Here is the file,这是我的代码
import flash.display.Stage;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.events.Event;
kim.gotoAndStop("kim Stand");
var grav:int = 0;
var floor = 450;
var dPressed:Boolean = false;
var aPressed:Boolean = false;
var jumping:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN , keyDownHandaler);
stage.addEventListener(KeyboardEvent.KEY_UP , KeyUpHandaler);
stage.addEventListener(Event.ENTER_FRAME , gameLoop);
function keyDownHandaler(Devent:KeyboardEvent):void
{
if (Devent.keyCode == Keyboard.D)
{
dPressed = true;
}
else if (Devent.keyCode == Keyboard.A)
{
aPressed = true;
}
else if (Devent.keyCode == Keyboard.W && !jumping)
{
jumping = true;
}
}
function KeyUpHandaler (Uevent:KeyboardEvent):void
{
if (Uevent.keyCode == Keyboard.D)
{
dPressed = false;
kim.gotoAndStop("kim Stand");
}
else if(Uevent.keyCode == Keyboard.A)
{
aPressed = false;
kim.gotoAndStop("kim Stand");
}
else if(Uevent.keyCode == Keyboard.W)
{
jumping = false;
kim.gotoAndStop("kim Stand");
}
}
function gameLoop(Levent:Event):void
{
if (dPressed)
{
kim.x += 5;
kim.gotoAndStop("kim Move Right");
}
else if(aPressed)
{
kim.x -= 5;
kim.gotoAndStop("kim Move Left");
}
else if(jumping)
{
kim.gotoAndStop("kim Jump");
kim.y -= 10;
}
gravity();
}
function gravity ():void
{
kim.y += grav;
if (kim.y+kim.height/2 <floor){
grav++;
}
else {
grav = 0;
kim.y = floor - kim.height/2 ;
}
}
答案 0 :(得分:1)
您可能想尝试基于状态的逻辑。键盘事件设置它,更新角色的操作在function doRender(color) {
var transY = ((100 - color.RND.hsv.v) / 100 * (hsv_barHeight)) - cursorRadius;
hsv_barcursor.style.transform = 'translateY(' + transY + 'px)';
}
中单独处理。这个谜题的最后一部分是当你认识到你已落地时更新你的状态(不是通过键盘交互发生的事情,而是来自你的引力功能)。
gameLoop()