EaselJS передача параметров с событиями

Я использую Adobe Flash CC для создания вывода EaselJS, манипулируя холстом HTML5. Однако, кажется, существует огромный упущение в способности передавать параметры слушателям событий.

Проблема в том, что я предлагаю несколько анимационных выходов для совместимости, один из которых использует EaselJS, а другой - Raphael, однако интерфейс, который управляет ими, остается прежним, это простые элементы HTML с данными, хранящимися в атрибутах, которые я хочу вызывать функциями, написанными во Flash IDE путем запуска событий и передачи параметров.

Я мог легко найти способы избежать использования EventDispatcher такие как регистрация их с корневым объектом и вызов их напрямую с помощью пользовательских обработчиков. Однако я бы предпочел, чтобы выходные данные Flash IDE были универсально совместимыми, насколько это возможно, и не загрязняли бы пространства имен объекта, над которыми у меня мало контроля. Я считаю плохой шаблон проектирования для написания кода во Flash IDE, который не будет работать без внешней помощи.

Есть ли способ передать параметры из диспетчера событий EaselJS в прослушивающие события? я знаю on() предоставляет параметр данных, но это бесполезно, поскольку мне нужно передавать разные параметры для одного и того же события в зависимости от взаимодействия с пользователем.

1 ответ

Вы можете поместить любые свойства в объект Event, который вы хотите. Когда вы отправляете событие, вы можете использовать строку наподобие "complete" (что лучше, если вам не нужны параметры, так как она не будет генерировать объект, если нет слушателей). Если у вас есть параметры, создайте новый createjs.Eventи добавьте любые свойства, которые вы хотите:

var event = new createjs.Event("complete");
event.time = new Date();
this.dispatchEvent(event);

Затем вы можете проверить объект события в вашем обработчике.

myObject.addEventListener("complete", handler); // add a listener
function handler(event) {
    console.log(event.time);
}

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

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