Как нацелить мувиклип с помощью createjs
Я пытаюсь экспортировать анимацию групповой фотографии, которая прекрасно работает во флэш-памяти, но не при экспорте в html5 canvas.
Уловка "проста": каждая фотография - это кнопка, и когда вы наводите курсор мыши на изображение кого-либо, появляется его название работы.
Я не могу сделать это с помощью createjs!
У меня на сцене есть экземпляр MovieClip с именем "jobs_cont", временная шкала которого имеет разные ключевые кадры и метки для всех рабочих титулов.
Дело в том, что мне не удается нацелиться на "jobs_cont" и использовать gotoAndPlay для определенного кадра или метки на временной шкале при наведении кнопки.
распознается одна "инструкция оповещения", но не "jobs_cont.gotoAndPlay":
var frequency = 3;
stage.enableMouseOver(frequency);
this.mybutton.addEventListener("mouseover", fl_MouseOverHandler);
function fl_MouseOverHandler(){
this.jobs_cont.gotoAndPlay("mylabel");
alert("hovered by mouse");
// end of your personalized code
}
Я думаю, что я должен пропустить что-то, нацеливающееся на "jobs_cont" в createjs, но я новичок в javascript и не могу понять это, несмотря на мой день исследований. Если бы кто-то мог дать подсказку. Спасибо.
1 ответ
Вы имеете дело с вопросами сферы. Если вы определяете функцию на временной шкале с использованием приведенного выше синтаксиса, у функции нет области действия, поэтому this
становится Window
,
Вы можете изменить синтаксис функции, который будет определен для текущего объекта:
this.fl_MouseOverHandler = function(){
this.jobs_cont.gotoAndPlay("mylabel");
alert("hovered by mouse");
// end of your personalized code
}
Наконец, JavaScript не предоставляет автоматически область действия функции для прослушивателей событий (пока!), Поэтому вы должны сами определить область действия функции. Если у вас есть версия 0.7.0 или более поздняя версия EaselJS, вы можете использовать on
метод вместо addEventListener
( документы). Обратите внимание, что вы должны использовать this.fl_MouseOverHandler
также.
this.mybutton.on("mouseover", this.fl_MouseOverHandler, this);
Вы также можете использовать эту функцию с помощью служебного метода, такого как Function.prototype.bind()
( документы):
this.mybutton.addEventListener("mouseover", this.fl_MouseOverHandler.bind(this));
Надеюсь, это поможет!