Показать сообщение отдельно
  #1 (permalink)  
Старый 10.03.2016, 11:24
Интересующийся
Отправить личное сообщение для Chrome Посмотреть профиль Найти все сообщения от Chrome
 
Регистрация: 17.01.2013
Сообщений: 21

Событие клавиатуры
Здравствуйте уважаемые форумчане.
Подскажите как правильно считывать события с клавиатуры?
Решил покачаться в http://www.babylonjs.com/
И столкнулся с такой проблемой.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Гейм</title>
     <script type="text/javascript" src="http://cdn.babylonjs.com/2-3/babylon.js"></script>
    <script type="text/javascript" src="hand-1.3.7.js"></script>
    <script type="text/javascript" src="cannon.min.js"></script>
</head>
<body>
<canvas id="canvas" style="position:absolute; width: 100%; height: 100%;"></canvas>
<script type="text/javascript">

 
    var canvas = document.getElementById("canvas");

    var engine = new BABYLON.Engine(canvas, true);
    var player;
    var keyPlayer;  

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    window.onkeyup = function (event) {

            if (event.keyCode == 32) {
                player.playAnimation(22, 32, false, 100);
             
            
            } else {
                player.stopAnimation();
                player.cellIndex = 44;
                keyPlayer = "";
            }
        
    }

    window.onkeydown = function (event) {
       
            if (event.keyCode == 65 && keyPlayer != event.keyCode) {
                player.playAnimation(0, 9, true, 100);
            }
            keyPlayer = event.keyCode;
        
    }

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   

    function createScene() {
        var scene = new BABYLON.Scene(engine);
        scene.clearColor = new BABYLON.Color3(0, 1, 1);
        var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene);
        camera.setTarget(BABYLON.Vector3.Zero());
        camera.attachControl(canvas, false);
      
        var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
        light.intensity = .5;


        var spriteManagerTrees = new BABYLON.SpriteManager("treesManagr", "08-2.png", 2, 64, scene);
        player = new BABYLON.Sprite("player", spriteManagerTrees);
        player.cellIndex = 44;
 

        return scene;
    }; 
    
    var scene = createScene();
  
    engine.runRenderLoop(function () {
        scene.render();
    });
    
    window.addEventListener("resize", function () {
        engine.resize();
    });
</script>
</body>
</html>


Когда одновременно нажимаю кнопку "A" и затем нажимаю и отпускаю пробел для прыжка то событие onkeydown сбрасывается и после приземление персонаж не двигается то есть приходиться заново отпускать и нажимать "A"

Как сделать так что бы событие не сбрасывалось?

может есть специальные библиотеки под эти задачи?
Изображения:
Тип файла: jpg 08-2.jpg (10.7 Кб, 2 просмотров)
Ответить с цитированием