Javascript 组合CreateJS+;音差

Javascript 组合CreateJS+;音差,javascript,jquery,cordova,createjs,Javascript,Jquery,Cordova,Createjs,我目前正在使用CreateJS套件开发一个HTML5/JavaScript游戏,它在浏览器中运行得非常好。 我现在正试图修改它,以便它可以作为PhoneGap应用程序使用。到目前为止,我已经设法解决了所有的问题;除了股票行情。基本上,我有一个初始化函数来填充我的LoadQueue,它在加载时调用handleComplete。在handleComplete函数的末尾,我设置: createjs.Ticker.addEventListener("tick", this.tick); createjs

我目前正在使用CreateJS套件开发一个HTML5/JavaScript游戏,它在浏览器中运行得非常好。 我现在正试图修改它,以便它可以作为PhoneGap应用程序使用。到目前为止,我已经设法解决了所有的问题;除了股票行情。基本上,我有一个初始化函数来填充我的LoadQueue,它在加载时调用handleComplete。在handleComplete函数的末尾,我设置:

createjs.Ticker.addEventListener("tick", this.tick);
createjs.Ticker.setFPS(gameFPS);
但当我运行时,我会在控制台中看到:

Uncaught TypeError: Cannot read property 'handleEvent' of undefined
我想这可能只是一个范围问题,但当我将此代码放在函数或app变量之外的任何位置时,仍然会出现相同的错误。我一直在寻找解决办法,但没有具体的办法。我已确保在调用所有事件处理程序之前声明/定义它们,我已尝试将.addEventListener更改为.on

使用jQuery的$()包装器可以解决这个问题吗?我不是一个经验丰富的JavaScript程序员,尽管我能够在没有太多帮助的情况下解决大多数问题;我想我可能已经超出了我的深度

欢迎提出任何建议。随便什么

谢谢

编辑: 我尝试将addEventListener行更改为:

createjs.Ticker.on("tick", createjs.proxy(this.tick));
现在,它通过加载,将我的所有对象绘制到画布上,但现在它给了我:

Uncaught TypeError: Cannot call method 'apply' of undefined         create.js:14
这是一个范围问题吗,它只是一直在丢失createjs的轨迹???

所以我改变了

 createjs.Ticker.addEventListener("tick", this.tick);

“app”是包含所有这些代码的var。在将其他几个函数调用更改为:“app.Example();”之后,我的代码最终通过PhoneGap集成在我的计算机和手机上运行。所以我假设在前面的例子中,它使用“this”来引用createjs.Ticker

我仍然非常感谢有经验的人的澄清/纠正,因为我经常会被这样的小问题困扰。因此,如果有人能插嘴解释我最初的做法到底有什么问题,这将大大有助于我今后避免像这样愚蠢的小错误


但至少现在我的代码可以工作了:D

我意识到这很旧,但我偶然发现了它,也许有一些指导。我需要查看更多的代码才能确定,但请怀疑您代理的“this”引用,并假设tick方法所在的范围/对象(app)不是您认为的范围/对象(app)。虽然将“this”代理到Ticker callback tick函数似乎是正确的,但如果您在另一个事件回调或劫持this引用的其他函数中这样做,并且没有正确地将“this”代理给它,那么“this”很可能并不指向您认为它所做的事情。它指向触发事件的对象。必须确保他们理解JavaScript的这个作用域规则。谷歌“JavaScript this scope”获取更多信息。

此外,所有其他createjs.****工具都可以工作,因为在加载阶段,我的进度条会被绘制到屏幕上。但是一旦股票代码被调用,它就会捕捉到错误
 createjs.Ticker.addEventListener("tick", app.tick);