尝试直接从javascript控制Paper.js时的奇怪行为

Weird behavior while trying to control Paper.js from javascript directly

本文关键字:js Paper 控制 javascript      更新时间:2023-09-26

我正在做一个项目,它要求我通过javascript控制纸张,而不是使用普通的paperscript路由。我目前因为一种我似乎无法弄清楚的奇怪行为而被困住。这是我正在运行的代码的简化版本

paper.install(window);
$(document).ready(function() { 
    paper.setup("canvas");
    Game.ship = new Ship(view.center, 1) // Essentially calls new Raster("imgid"); and positions it
    view.draw(); 
});

出于某种原因,此代码导致空白画布。奇怪的是,如果我在几秒钟后在开发控制台中调用new Ship(...),光栅在画布上呈现得很好,这是应该的。我还注意到,当我查看 Game.ship.elem.__canvas 的值时,我看到一个大小为 32、32 的 canvas 元素,即使 DOM 中不存在这样的画布。

假设这与计时有关,但我似乎无法弄清楚我必须做什么才能使其工作,除了使用 setTimeout 在调用$(document).ready()几秒钟后创建栅格的令人难以置信的混乱方法。

有人对这里发生的事情有任何想法,或者可以引导我走向正确方向的事情吗?

实际上我设法自己弄清楚了。对于遇到此问题的任何人来说,问题实际上是因为在图像完成加载之前调用ready()函数。

因此,new Raster()调用将不存在的图像加载到画布中,导致空白结果!