【问题标题】:HTML5 CreateJS game, update function not workingHTML5 CreateJS 游戏,更新功能不起作用
【发布时间】:2014-10-02 14:22:15
【问题描述】:

似乎一切都符合这个“更新”功能。一个蓝色的桨(矩形)应该出现在我的舞台右下角,但它没有。

const ARROW_KEY_LEFT = 37;
const ARROW_KEY_UP = 38;
var stage,padle;
var leftKeyDown,rightKeyDown = false;

function init(){
stage = new
createjs.Stage(document.getElementById("canvas"));
    createjs.Ticker.addEventListener("tick", tick);
    createjs.Ticker.setFPS(60);
    startGame();
};

function startGame(){
padle = new createjs.Shape();
padle.width = 100;
padle.graphics.beginFill("#0000FF").drawRect(0, 0, padle.width, 20);
padle.x = padle.nextX = 0;
padle.y = stage.canvas.height - 20;
stage.addChild(padle);
window.onkeydown = movePadle;
window.onkeyup = stopPadle;

};
function movePadle(e){
e = !e ? window.event : e;
switch (e.keyCode){
    case ARROW_KEY_LEFT:
        leftKeyDown = true;
    break;
    case ARROW_KEY_RIGHT:
        rightKeyDown = true;
    break;
}
};

function stopPadle(e){
e = !e ? window.event : e;
switch (e.keyCode){
    case 37:
        leftKeyDown = false;
    break;
    case 39:
        rightKeyDown = false;
    break;
}
};

这是似乎不起作用的更新功能。任何帮助表示赞赏!

function update(){
var nextX = padle.x;
if (leftKeyDown){
    nextX = padle.x - 10;
    if(nextX < 0){          
        nextX = 0;      
    }
}else if (rightKeyDown){
    nextX = padle.x + 10;
    if(nextX > stage.canvas.width - padle.width){
        alert("right key down");
        nextX = stage.canvas.width - padle.width;
    }
}

function tick(e){
update();
render();
stage.update();
};

http://jsfiddle.net/9nff5kta/

它不再适用于 jsfiddle

【问题讨论】:

标签: html html5-canvas createjs


【解决方案1】:

我玩了一点,让它“工作”。由于导出与 CreateJS 一起使用的方式,JSFiddle 不是测试 Flash HTML/JS 输出的最佳场所。我做了一些小改动,让它可以在 jsfiddle 中工作。

  • 我将 JS 导入放入资源中,以便它们首先加载
  • 我删除了 JavaScript 中的“createjs”声明。您将 keyboardEvents.js 包含在 jsfiddle“JavaScript”窗口中,该窗口将其包含在一个闭包中,而不是全局的,因此它重新创建了“createjs”命名空间 - 这使得它无法在您的类中找到 CreateJS 库。通过删除它,它会强制它使用加载的 JS 库。

http://jsfiddle.net/lannymcnie/9nff5kta/1/ 我相信这是您在本地开始的。

一旦它开始工作,我在控制台中收到一个错误,ARROW_KEY_RIGHT 未定义。您的代码只有ARROW_KEY_LEFTARROW_KEY_UP。一旦我更改了变量名,它似乎就可以工作了。查看上面修改后的小提琴。

请注意,我刚刚在 Chrome 中打开了开发工具,并且立即发现了错误,因此很清楚发生了什么。 jsfiddle 的东西更难调试。

干杯。

【讨论】:

  • 另外,左右行为似乎是颠倒的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
相关资源
最近更新 更多