2012-05-14 1 views
0

Я работаю над проектом, который требует от меня управлять бумагой через javascript, а не с использованием обычного письма-протокола. Я в настоящее время застрял из-за странного поведения, которое я не могу понять. Вот упрощенная версия кода я бегуСтранное поведение при попытке управления Paper.js с javascript напрямую

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(...) через консоль dev через несколько секунд, растровое изображение будет просто отлично на холсте, как и должно быть. Я также заметил, что когда я смотрю на значение Game.ship.elem.__canvas, я вижу элемент canvas размером 32, 32, хотя в DOM такого холста нет.

Я предполагаю, что это имеет какое-то отношение к срокам, но я не могу понять, что мне нужно сделать, чтобы заставить его работать, кроме невероятно грязного подхода к использованию setTimeout для создания растра a через несколько секунд после вызова $(document).ready().

У кого-нибудь есть идеи относительно того, что здесь происходит, или что-то, что может привести меня в правильном направлении?

ответ

2

На самом деле мне удалось выяснить это самостоятельно. Для всех, кто сталкивается с этим, проблема была на самом деле потому, что функция ready() вызывалась до изображение закончило загрузку.

Из-за этого звонок new Raster() загружал несуществующее изображение в холст, что привело к пустому результату!

+0

Я столкнулся с тем же, когда работал с бумажными растрами. Я закончил использование [imagesloaded] (https://github.com/desandro/imagesloaded). – bmacnaughton

Смежные вопросы