Javascript 多动画表

标签 javascript animation

我使用以下 javascript 库编写了代码,SimpleGame.js作者:A.哈里斯。

我的代码如下,问题是当按下箭头键时, Angular 色不会产生动画,当释放相同的键时,它会产生动画...什么是我失踪了?此外,应该是左箭头键的39键根本不起作用。任何帮助表示感谢,谢谢。

http://www.retroinvaders.net/multiAnimationTest.html

多动画测试

<script type="text/javascript" src="simpleGame.js"></script>

<script type="text/javascript">
    var game;
    var background;
    var character;
    var critter;

    window.addEventListener("keydown", keydownHandler, false);


    function init() {
        game = new Scene();
        background = new Sprite(game, "media/rpgMap.png", 800, 600);
        background.setSpeed(0, 0);
        background.setPosition(400, 300);

        character = new Character();
        critter = new Critter();
        game.start();
    }

    function update() {
        game.clear();
        checkCollisions();
        background.update();
        character.update();
        critter.update();
    }

    function Character() {
        tCharacter = new Sprite(game, "media/rpg_sprite_walk.png", 192, 128);

        tCharacter.loadAnimation(192, 128, 24, 32);
        tCharacter.generateAnimationCycles();
        tCharacter.renameCycles(new Array("down", "up", "left", "right"));
        tCharacter.setAnimationSpeed(1000);

        tCharacter.setPosition(440, 380);
        tCharacter.setSpeed(0);
        tCharacter.pauseAnimation();
        tCharacter.setCurrentCycle("down");

        return tCharacter;
    }

    function keydownHandler(event) {

        if (event.keyCode === 37) {

            character.playAnimation();
            character.setCurrentCycle("left");
            character.setMoveAngle(270);
            character.changeXBy(-5);

        }

        if (event.keyCode === 39) {

            character.changeXby(5);

            character.playAnimation()
            character.setMoveAngle(90);
            character.setCurrentCycle("right");
        }

        if (event.keyCode === 38) {

            character.playAnimation()
            character.changeYby(-5);


            character.setMoveAngle(0);
            character.setCurrentCycle("up");
        }

        if (event.keyCode === 40) {

            character.changeYby(5);
            character.playAnimation()

            character.setMoveAngle(180);
            character.setCurrentCycle("down");
        }
    }



    function Critter() {
        tCritter = new Sprite(game, "media/critter.gif", 30, 30);
        tCritter.setSpeed(0);
        tCritter.setPosition(200, 200);
        return tCritter;
    }

    function checkCollisions() {
        if (character.distanceTo(critter) <= 30) {
            critter.hide();
        }

    }
</script>

最佳答案

每次按下一个键时,您都会分配新的animationCycle。
chrome 似乎没有时间设置新的动画周期。 仅在需要时才使用标志进行更改修复此问题:

function keydownHandler(event) {
    event.preventDefault();
    if (event.keyCode === 37) {
        if (character.animation.currentCycleName !== "left") {
            character.setCurrentCycle("left");
        }
        character.changeXby(-5);
        character.playAnimation();
        character.setMoveAngle(270);
    }

    if (event.keyCode === 39) {
        if (character.animation.currentCycleName !== "right") {
            character.setCurrentCycle("right");
        }
        character.changeXby(5);
        character.playAnimation()
        character.setMoveAngle(90);

    }

    if (event.keyCode === 38) {
        if (character.animation.currentCycleName !== "up") {
            character.setCurrentCycle("up");
        }
        character.changeYby(-5);
        character.playAnimation();
        character.setMoveAngle(0);
    }

    if (event.keyCode === 40) {
        if (character.animation.currentCycleName !== "down") {
            character.setCurrentCycle("down");
        }
        character.changeYby(5);
        character.playAnimation();
        character.setMoveAngle(180);

    }
}

See fiddle

关于Javascript 多动画表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25546699/

相关文章:

animation - Android - 像开门一样的图像旋转

javascript - 创建圆形鼠标悬停饱和效果

javascript - 比较起始日期小于截止日期

javascript - 删除字符串的一部分,但得到删除的部分作为结果

javascript - SammyJS 无法与 Django 一起使用

python - Pygame 键盘输入事件滞后

java - 如何在android studio上更新Java的onDraw()

android - 使用 CoordinatorLayout 和 AppBarLayout 查看动画变得疯狂(有时)

javascript - 使用 Twitter API 发推文时出现重复状态错误

javascript - 如何使用 javascript 更改 JSON 中根元素的名称?