Как нацелить мувиклип с помощью 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));

Надеюсь, это поможет!

Другие вопросы по тегам