Не получается получить доступ к свойству объекта Kinetic.Image
Не могу вывести свойство объекта класса, в одном из методов этого класса.
function Snake () { var snakeImg = new Image(); snakeImg.src = "Snake.png"; snakeImg.onload = function () { this.snake = new Kinetic.Image ({ x:40, y:40, image:snakeImg }) var snakeLayer = new Kinetic.Layer; snakeLayer.add (this.snake); stage.add (snakeLayer); } } Snake.prototype.move_derection = function () { console.log("ne pish" +this.snake.x); } Не узнает оно this.snake в методе. Вместо вывода x координаты, пишет что this.snake не определен. |
Конечно. this.snake у тебя добавляется асинхронно, при загрузке Image.
|
Так, а как исправить?
|
Концептуально. Сменив подход. Я б вообще отнаследовал Snake от Kinetic.Image. Но это крайности.
|
Существенная проблема в том, что ты пытаешься одновременно конструировать новый объект, скармливать ему ресурсы и проверять их загрузку.
|
Что-то типо:
window.onload = init; //... //описание всяких переменных //... function init () { stage = new Kinetic.Stage ({ container: "container", height: HEIGHT, width: WIDTH }); snakeImg = new Image(); snakeImg.src = "Snake.png"; //инициализация начнется только после загрузки картинки. snakeImg.onload = function () { snakeObj = new Snake (); snakeObj.move_derection (); } }; И прежний код с классом Змейки. Вроде, что б улучшить, можно сделать так: в начале создавать функцию, которая будет инициализировать все картинки что есть, а уж после их загрузки, вызывать другую функцию с инициализацией всяких переменных, объектов и т.д. Удобоваримо? |
Часовой пояс GMT +3, время: 19:57. |