Переход с Flash 8 на CS3

После многих лет использования Flash 8 я перехожу на CS3 на работе. Я знаю, что мне придется изучить AS 3.0, так что есть ли у кого-нибудь хорошие ссылки или резюме основных / наиболее заметных изменений? Кроме того, есть ли какие-нибудь советы / рекомендации по использованию флэш-памяти? Проведя несколько минут в CS3, я заметил, что вы не можете напрямую прикрепить ActionScript к кнопке, что для меня в новинку. Есть ли другие подобные ловушки, за которыми нужно следить?


person Everett    schedule 09.12.2009    source источник
comment
Я бы просто дождался CS5 (выйдет в апреле 2010 года)   -  person Adam Harte    schedule 10.12.2009
comment
@TandemAdam - Приведите цитату, пожалуйста. Слухи ходили веками.   -  person Moshe    schedule 10.12.2009
comment
Хорошо, конечно, дата поставки официально не объявлена, но бета-версия будет доступна до конца года.   -  person Adam Harte    schedule 10.12.2009


Ответы (3)


Я полностью переключился примерно 3 месяца назад, вот некоторые вещи, которые помогли мне довольно быстро нарастить:

1) Делайте все в файлах класса

Многие учебники по AS3 имеют дело только с кодом, вставленным на временную шкалу (что я терпеть не могу, потому что теперь вам нужно искать, какой импорт вам нужен), но подходит для быстрых крошечных вещей. В конечном итоге это лучше работает в первую очередь с файлами классов. Изучение того, как работают классы, открыло для меня огромные двери, это было то же чувство / опыт, который я испытал, когда впервые открыл для себя функции в AS2 :)

2) Храните графику в библиотеке и вне рабочего пространства

Например, у вас есть файл jpg, gif, png, который вы только что импортировали в свою библиотеку. Сделал movieClip и присвоил ему имя класса (MyButton). Теперь приведенный ниже код поместит изображение в рабочую область за вас:

var myButton:MovieClip = new MyButton();
    myButton.x = 6;
    myButton.y = 22;
    myButton.buttonMode = true;

addChild(myButton);    

3) Используйте новый код кнопки в AS3

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

myButton.addEventListener(MouseEvent.MOUSE_UP, clickThis);

function clickThis(event:MouseEvent):void
        {
            navigateToURL(new URLRequest("form.html"), "_self");
            //navigateToURL(request, '_self');
        }

4) Убедитесь, что вы удалили прослушиватели событий после использования

Мне потребовалось немного времени, чтобы обернуть меня вокруг этого ... удалить их, зачем? О, они все еще работают в фоновом режиме, и когда я снова слушаю, я получаю всевозможные мутировавшие ошибки.

private function volDown(e:MouseEvent):void
    {
        masker.width = volControl.mouseX;
        userVolume = (masker.width / 100) * 1;
        volControl.addEventListener(MouseEvent.MOUSE_MOVE, volMove);
    }

private function volUp(e:MouseEvent):void
    {
        lastVolPoint = masker.width;
        setVolume(userVolume);
        e.updateAfterEvent();
        volControl.removeEventListener(MouseEvent.MOUSE_MOVE, volMove);
    }

5) Не забывайте проходить События

Я не программист по профессии, и это вызвало столько горя, я рад, что покончил с этой родовой болью:

myButton.addEventListener(MouseEvent.MOUSE_UP, clickThis);

Поскольку функция clickThis запускается через событие, вы должны передать в нее: event:MouseEvent следующим образом:

function clickThis(event:MouseEvent):void

Потому что приведенный ниже код вызовет ужасную ошибку AS3 «Доступ к неопределенному свойству», с которой всегда будут сталкиваться новички в AS3.

function clickThis():void

6) Читайте и задавайте вопросы на StackOverflow ... много!

кстати, я все еще новичок и изначально дизайнер, а затем разработчик AS2, я до сих пор не знаю, почему мы добавили: void за именем функции ... если у нас есть похожие фоны кодирования, я надеюсь, что все это поможет :)

person Leon Gaban    schedule 09.12.2009
comment
Хороший ответ, очень обстоятельный. +1 Мы помещаем void после имени функции, чтобы функция знала, что она ничего не возвращает или что она возвращает void. Функции (должны) возвращать значения, хотя они не всегда, и: xyz после имени функции сообщает нам, какой тип объекта возвращает функция. Если бы я писал математическую функцию с именем add: function addEm (a: Number, b: Number): Number {return (a + b); } (Я занимаюсь AS3 около 2 лет. Я до сих пор не занимаюсь классами. Личные предпочтения. На других языках, конечно, я делаю то, что необходимо, на уровне классов.) - person Moshe; 10.12.2009
comment
(Извините за отсутствие разрывов строк в предыдущем комментарии, я забыл об этом ...) - person Moshe; 10.12.2009
comment
Ах, спасибо за комплимент и объяснение функции void с функциями хе-хе .. так что вы все еще делаете сценарии временной шкалы и кадра в AS3? Я чувствовал, что это хорошо, что мне не пришлось копаться в нескольких фильмах, как я использовал в AS2. - person Leon Gaban; 10.12.2009
comment
вау, я только что осознал, насколько текстовые сообщения, Flash и сайты социальных сетей влияют на мой стиль набора текста ... - person Leon Gaban; 10.12.2009

Я предлагаю вам посетить страницу миграции языка ActionScript в сети разработчиков Adobe. Он предлагает довольно много статей о ключевых изменениях в ActionScript 3.

Чтобы ответить на вашу проблему с действиями на кнопке, это больше не работает (и уже с ActionScript 2 это был не лучший способ сделать это). AS3 требует, чтобы код был централизован на временной шкале. Итак, чтобы дать кнопке какое-либо действие, вам нужно дать ей имя экземпляра и добавить прослушиватель событий для события CLICK, например:

function doSomething ( event:MouseEvent ):void
{
    trace( "test" );
}
myButton.addEventListener( MouseEvent.CLICK, doSomething );
person poke    schedule 09.12.2009

Получите IDE для ActionScript 3. Например, Flash Builder, FlashDevlop или FDT. Это заставит вас учиться очень быстро.

person Adam Harte    schedule 10.12.2009