15 ошибок начинающих Flash-программистов
Как известно, лучше всего учиться на чужих ошибках. Ниже приведён список самых распространённых ошибок начинающих Flash-программистов.
1. Равенство в условиях обозначается двойным равенством, поэтому код if (i=1){} работать не будет. Правильный вариант кода if (i==1){} Это ошибка многих начинающих программистов.
2. Когда команды пишутся вручную, очень важно соблюдать регистр. Регистр в Flash’е имеет значение! Поэтому команда gotoandplay() не будет работать, правильный вариант: gotoAndPlay().
3. Комментарии. Комментарии в программном коде вводятся знаком двойного слеша //, но действуют только на одну строку, нельзя об этом забывать. На каждой строке нужно повторять этот символ.
4. Команда removeMovieClip() удаляет только те мувиклипы, которые не были созданы вручную, то есть те, которые появились в результате использования команд duplicateMovieClip() и attachMovie().
5. Динамическое текстовое поле. Содержание поля Var не является названием динамического поля. Чтобы обратиться к текстовому полю, нужно сначала ввести имя в его instance name. Использовать в программном коде нужно с определением типа переменной. Например, название поля mytext. Если мы хотим, чтобы изначально в поле mytext было написано «Мой текст». то нужно написать mytext.text = "Мой текст".
Это один из способов, можно так же в поле Var задать переменную, например myvar, и в кадре написать myvar = «Мой текст».
6. Сцены. Со сценами Flash часто работает некорректно, поэтому лучше содержание каждой сцены включить в отдельный кадр, который находится на главной сцене. Если же вы всё-таки пользуетесь сценами, то учтите, что сцены созданы для облегчения создания анимации, но никак не участи программиста. Кадры, например, нумеруются с начала 1-ой сцены, а не с начала каждой, как принято полагать.
7. Расположение кода. Очень часто новички предпочитают располагать код непосредственно на мувиклипах и кнопках, но вместе с тем, первый признак профессионализма – расположение всего кода в одном кадре. Действительно, располагая код в одном кадре, становятся очевидными все ошибки и недочёты кода, всё исправляется намного быстрее, чем если бы вы искали свой код, разбросанный по разным местам.
8. Обращение к кнопкам. Многие пытаются обратиться к кнопкам, но это абсолютно бесполезно, так как кнопки на это не реагируют. Что же делать? Как же быть? Нужно из мувиклипа сделать кнопку и обращаться к мувиклипу как к кнопку. Для этого нужно использовать такие функции, как onRelease, onRollOver.
9. Злоупотребление onEnterFrame. Эта команда достаточно сильно грузит процессор и тем самым тормозит работу компьютера, так как эта команда выполняет те или иные действия, симулируя проигрывание этого кадра снова и снова. То есть если у вас fps (кадры в секунду) равняется 30, то проверка проводится каждые 30 миллисекунд, а это очень существенно для процессора.
10. Названия переменных, мувиклипов и всего остального. Это достаточно спорный вопрос, но всё же есть какие-то официально принятые ограничения и рекомендуемые. Сначала официальные – нельзя называть мувиклипы именами, которые начинаются с цифры. Нет, назвать вы конечно можете, но обратиться к ним вам не удастся. Это частая ошибка начинающих. Если у вас есть несколько одинаковых мувиклипов, и вы хотите назвать их по порядку (в instance name), то не следует вводить «1», «2», «3». Правильный вариант: “mc1”, “mc2”, “mc3”. Теперь рекомендуемые: называйте переменные осмысленно, или используйте бессмысленные названия переменных, которые имеют что-нибудь общее, а то быстро запутаетесь в переменных, что за что отвечает. Мувиклипы и кнопки рекомендуется называться соответственно my_mc и my_btn. Но повторяю, это достаточно спорный вопрос.
11. Метод attachMovie(). Этот метод переносит программно мувиклип из библиотеки на сцену. У новичков часто возникает проблема с Linkage – имя, которое следует ввести в команде attachMovie(). Часто начинающие программисты считают, что это имя и имя мувиклипа – это одно и то же. Смею вас огорчить, это совершенно разные вещи. В команду attachMovie() нужно ввести имя Linkage мувиклипа. Чтобы его задать, нужно выделить мувиклип в библиотеке и выбрать Правая кнопка – Linkage (Связь), ввести имя и отметить галочками пункты Экспорт в ActionScript и экспорт в 1-ый кадр. Тогда всё будет работать.
12. Различные типы переменных. Часто путаются числовые и текстовые переменные, которые выглядят как первые. Например, если вы с помощью charAt() узнаёте номер мувиклипа для последующих действий, не забудьте после этого использовать команду Number(), чтобы изменить тип переменной на числовой. Из-за этого может не работать весь программный код ролика.
13. Комментарии. Иногда полезно их использовать, чтобы не потеряться в своём коде. Как их вводить мы рассмотрели в пункте 3, сейчас рассмотрим, в каких случаях они необходимы. Например, у вас есть 4 условия вложенных одно в другое. Представляете, сколько будет закрывающих скобок? Если используются такие условные операторы как if, else, if else. Не меньше 10-15 скобок…
14. Команда delete. Очень многие программисты просто не знают про её существование и соответственно никогда не используют, а зря. Эта команда позволяет удалять различные функции, которые уже не могут понадобиться. Например, функция onEnterFrame. Как было сказано выше, она тратит много ресурсов процессора. А если их несколько… Если какие-то из них уже не нужны, то можно их удалить с помощью этой команды. Синтаксис очень простой: delete this.onEnterFrame.
15. Очень распространённая проблема с сохранением каких-либо переменных в файл. Flash поддерживает эту возможность, это недокументированная команда. Сохраняет он данные в специальный файл (не текстовый, а своего разрешения) и оттуда же считывает их. Как использовать SharedObject() (а именно так называется эта команда) мы рассмотрим в одной из ближайших статей. Можно только сказать, что там довольно много различных нюансов… Многие, кто даже знает о существовании этой команды, не могут использовать её корректно.
Мы рассмотрели 15 основных, часто встречающихся ошибок у Flash-программистов. Конечно, есть и многие другие, но эти наиболее распространенные. Учиться всё-таки лучше на чужих ошибках, так по крайней мере быстрее…