按住按键时的 Javascript easelJS 动画

标签 javascript jquery html animation easeljs

我正在尝试使用 easelJS 制作 HTML5 RPG 游戏来处理 Sprite 动画。当我向任意方向按箭头键时, Angular 色不会播放动画,而是似乎跳回到第 0 帧并停止,而不是循环播放动画。

我需要的是在按下按键时继续循环的动画,而不是 Angular 色卡在框架中。

这是我到目前为止的游戏,它真的很困惑,因为我正在试验并且仍在学习 HTML5。 http://cloudrealms.com/dev/

这是我正在使用的代码:

箭头键捕获:

      $(window).keydown(
        function(e){
            keys[e.which] = true;
            if(isMovementKey(e.which))
            {
                moveOrder.unshift(e.which);
                jQuery.unique(moveOrder);
                animationsToPlay.push(1);
            }
            e.preventDefault();
            return false;
        }
    );
    $(window).keyup(
        function(e){
            keys[e.which] = false;
            if(isMovementKey(e.which))
            {
                moveOrder.splice(jQuery.inArray(e.which, moveOrder),1);
            }
        }
    );

在我的勾选中,我有一个名为 HandleInput() 的函数,代码如下:

function HandleInput()
{
    switch (moveOrder[0]) {
        case 38:  /* Up arrow was pressed */
            playerSequence[playerID].gotoAndPlay("walk_up");
            playerSequence[playerID].y -= playerSequence[playerID].vY;
        break;
        case 40:  /* Down arrow was pressed */
            playerSequence[playerID].gotoAndPlay("walk_down");
            playerSequence[playerID].y += playerSequence[playerID].vY;
        break;
        case 37:  /* Left arrow was pressed */
            playerSequence[playerID].gotoAndPlay("walk_left");
            playerSequence[playerID].x -= playerSequence[playerID].vX;
        break;
        case 39:  /* Right arrow was pressed */
            playerSequence[playerID].gotoAndPlay("walk_right");
            playerSequence[playerID].x += playerSequence[playerID].vX;
        break;
    }
}

我想知道的是如何在按住箭头键的情况下为玩家 Sprite 设置动画?

最佳答案

有点令人困惑,很难判断你的代码在做什么,你能提供一个链接吗?

关于让你的玩家在按键按下时移动,我可以提供一些建议。 onkeydown 事件的工作方式是,只要按下键,就会触发该事件。

如果我是你,我会有一个 bool 值来表示按键是否被按下。在 keydown 事件上,将其设置为 true,在 keyup 事件上将其设置为 false。:

$(window).keydown(
    function(e){
        bool_keyDown = true;
    }
);
$(window).keyup(
    function(e){
        bool_keyDown = false;
    }
);

请注意,这适用于任何键,您必须在 keydown 函数中指定您想要的键,但您可以在 keyup 函数中将其保留为通用键。您可以在您的股票行情中检查它是否属实。如果这是真的,您可以在 spritesheet 上运行 gotoandplay 功能:

function HandleInput()
{
    if(bool_keyDown) 
        playerSequence[playerID].gotoAndPlay("walk_up");
}

这并不特定于任何一个键。所以你可能想将它从 bool 值更改为字符串。可能有字符串“up”、“down”、“left”、“right”等,并且 null 表示没有按下任何键。希望这可以帮助。

--阿什利

关于按住按键时的 Javascript easelJS 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056253/

相关文章:

javascript - 使用 Javascript 按住 Alt 键单击元素

javascript - 根据值添加外部 css

javascript - JS简单函数调用不起作用

python - Django 中默认选择的单选按钮

javascript - 在 Google App Engine 上重命名 index.html

javascript - 如何使用 Laravel rest api 在 vue-tables-2 上添加分页?

javascript - 搜索结果应出现在 3 个字符之后

javascript - 仅追加限制 5 次 jquery .append

html - Xhtml 过渡弹出窗口

html - 如何更改 Bootstrap 导航栏宽度以适应 Column-md-1