Преобразование кода as3 btn в Javascript

Я пытаюсь преобразовать файл flash as3 в документ canvas html5 с помощью javascript.

Как мне преобразовать этот код ниже?

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

function onClickHandler(myEvent:MouseEvent)
{
    SoundMixer.stopAll();
    MovieClip(parent).nextFrame();
}

Моя попытка javascript, которая теперь работает.

this.nex.onClick = function(){

 exportRoot.play();

}

Спасибо за помощь!


person CsharpBeginner    schedule 06.03.2015    source источник
comment
нет события onClick, есть событие onclick.   -  person epascarello    schedule 06.03.2015
comment
Спасибо, я исправил этот C на c ... Все еще безуспешно и заставить его перейти к корню и воспроизвести следующий кадр.   -  person CsharpBeginner    schedule 06.03.2015
comment
Какие-то ошибки в консоли? Что такое this.nex? Что такое exportRoot? Вам нужно сделать работающий пример.   -  person epascarello    schedule 06.03.2015
comment
nex — это имя моего экземпляра кнопки во flash. Я обнаружил, что exportRoot — это фрагмент кода, который, я думаю, должен вернуть вас на корневой уровень.   -  person CsharpBeginner    schedule 06.03.2015
comment
Ну, nex должен быть ссылкой на объект DOM. И exportRoot ничего не значит в JavaScript, если только вы не включили в него какой-то фреймворк.   -  person epascarello    schedule 06.03.2015
comment
Итак, вы знаете, как я ссылаюсь на корень? Я не уверен, что такое ссылка объекта на DOM. никогда не писал javascript.   -  person CsharpBeginner    schedule 06.03.2015


Ответы (2)


Я не пытаюсь быть педантичным, но ваша проблема вряд ли так проста, как преобразование ActionScript 3.0 в JavaScript. AS3 по большей части является надмножеством JavaScript (см. ECMAcSript 4), поэтому преобразовать "вниз" в JavaScript легко:

nex.addEventListener(MouseEvent.CLICK, onClickHandler);

function onClickHandler(myEvent)
{
    SoundMixer.stopAll();
    MovieClip(parent).nextFrame();
}

Почти так же выглядит, верно? Вы только что удалили объявление типа MouseEvent в myEvent, потому что объявления типов — это функция ECMAScript 4, которая так и не вошла в JS (к сожалению).

Настоящая проблема заключается в том, что API браузера и API Flash Player сильно различаются. И даже если они могут быть похожими, они не обязательно одинаковы во всех браузерах. Теперь, чтобы быть справедливым, я думаю, что это действительно был ваш первоначальный вопрос, я просто хотел указать, что путь вперед включает в себя знание большого количества различий между функциями Flash Player и функциями браузера, потому что именно здесь будет большая часть работы. Это фактическое преобразование синтаксиса не должно быть слишком сложным.

Возвращаясь к вашему примеру, вот несколько отличий, на которые следует обратить внимание:

1) Хотя addEventListener() является допустимым методом браузера (вопреки тому, что сказал комментатор), он не поддерживается в старых браузерах, таких как IE8. В этом случае вы можете использовать attachEvent(), а в качестве окончательного запасного варианта вы можете использовать обратный вызов DOM onClick. Дополнительные пояснения здесь.

2) Пока MouseEvent существует в той или иной форме в браузере, в JS нет статических констант, поэтому вы не найдете таких вещей, как MouseEvent.CLICK, определяемых браузером. Вместо этого вы просто будете использовать строку "click".

3) SoundMixer — это функция Flash Player. Ближайшим эквивалентом в браузере будет аудио HTML5. Здесь есть много отличий, сделать аудио в браузере непросто, и у вас просто не будет такого же количества возможностей, как у звуковых API Flash Player. Я бы искал библиотеку, которая упрощает работу со звуком в браузере.

4) MovieClip — это функция Flash Player. В браузере нет близкого аналога. На самом деле здесь нет простого ответа на вопрос о том, как воссоздать материал, похожий на временную шкалу, в браузере, но есть такие библиотеки, как CreateJS (создано пользователями Flash) или с помощью таких инструментов, как Adobe Edge Animate, или с помощью собственные функции вывода HTML в Adobe Flash Pro могут помочь вам создавать вещи для браузера.

РЕДАКТИРОВАТЬ: Ага, мне непонятно из вашего вопроса, но поскольку вы отметили это [flash-cc], похоже, вы уже используете документ HTML Canvas Adobe Flash Pro CC? В этом случае все вышеперечисленное остается в силе, но, кроме того, вы сможете использовать JS-библиотеку временной шкалы Flash Pro. Это комбинация CreateJS и некоторых дополнительных вещей, которые Adobe создала для имитации многих вариантов поведения временной шкалы Flash Player в браузере, который не имеет встроенной временной шкалы. Подробнее об этом я бы начал здесь: https://helpx.adobe.com/flash/using/creating-publishing-html5-canvas-document.html

person Aaron Beall    schedule 06.03.2015

Вот правильный код, который теперь можно использовать для кнопок в флеш-проекте html5.

this.Next.addEventListener("click", fl_ClickToGoToAndStopAtFrame_7.bind(this));

function fl_ClickToGoToAndStopAtFrame_7() {

    this.gotoAndStop(1);

}
person CsharpBeginner    schedule 18.03.2015