【发布时间】:2017-03-08 16:15:46
【问题描述】:
我正在编写一个应用程序来学习 TypeScript。它在 Chrome 中运行良好,但在 Edge 中运行时出现问题。我有这个方法:
set position(pos: Point) {
const diffAsPoint = pos.minus(this.canvasPos);
let diff: Vector2D = diffAsPoint.toVector2D(); // <--- this line
if (diff instanceof Vector2D) {
console.info("is a vector!");
} else {
console.info("not a vector!");
}
我看到,有时差异是Vector2D,而不是Vector2D 的实例。显然,发生这种情况时,对其进行的任何操作都会导致Object doesn't support property or method ...
toVector2D的方法很简单:
toVector2D(): Vector2D {
return new Vector2D(this.x, this.y);
}
我不知道这是否会有所不同,但这里有一些背景:
该应用是在游戏循环中运行的游戏(每秒 60 帧 - 使用
window.requestAnimationFrame(() => this.animloop());)应用在 Chrome 中运行良好
它在 IE 中运行不正常(它看起来像一个不同的问题,但我还没有看到什么,因为 IE 和调试器工具在调查时崩溃)
它使用最新的 TypeScript (2.2.1)
好像是在开机后的一个随机时间点发生,有时是2秒,有时是3秒
代码中还有其他地方发生这种情况,都与
Point和Vector2D相关,似乎与在每一帧中创建它们有关(如果我引入一个字段而不是每帧创建一个)我正在使用 AMD 和 requirejs
更新-------
使用 Edge 和调试工具并设置“始终从服务器刷新”,当从网站 (http://pacmanweb.azurewebsites.net/) 加载时,我可以看到游戏 尝试 运行 在加载所有模块之前。而在 Chrome 中,它似乎在运行游戏之前等待所有内容加载。
有什么想法吗?
【问题讨论】:
-
这确实很奇怪,你有没有机会制作一个像 plnkr 这样的东西来显示这个问题。我们也可以玩的东西? :)
-
@toskv - 我已经包含了一个网站链接 - 希望你喜欢它(在你修复它之后:))
标签: javascript typescript html5-canvas microsoft-edge