Глюки Flash
 

Вот пара глюков, которые нам удалось выявить во Flash 5. На деле их гораздо больше, но не все удается "поймать". Если вам известны какие-нибудь еще глюки (читай - баги) Flash 5 или Flash MX - напишите нам, пожалуйста! Итак...

Проблема "Я"

Данная проблема относится только ко Flash 5 (ну и, может быть, к прошлым версиям). Во Flash MX она устранена, также в тексте правильно отображается кириллица (русские буквы).

Если в текстовой строке внутри Action script'a попадется строчная русская буква "я", то , при компиляции, flash выдаст сообщение о том, что строка закончена неправильно и пропустит скрипт текущего кадра, оставив графику. Видимо это флэшовый глюк, и исправлять его придется самим, причем программно… Скорее всего, способов его устранения множество, мы предлагаем 2 проверенных:

1-й способ: добавление к тексту кода "chr(255)", вместо буквы "я"

У Вас есть строка:
text1="--- Проблема буквы я ---";

Вставляем код таким образом:
text1="--- Проблема буквы "+chr(255)+" ---";

Этот способ оправдывает себя только при небольших текстах. Если в тексте встречается множество "я" то строки получаются слишком громоздкие.

2- способ: замена в тексте буквы "я" на любой "ненужный" символ, и обратно

Берем символ "~" и заменяем на него все "я"

было:
text1="--- Проблема буквы я ---";

получилось:
text1="--- Проблема буквы ~ ---";

А в процессе работы меняем символ "~" на "я", к примеру, так:

//здесь назначаем "ss" как подстроку строки ( "text1" , с i -ого символа, длинной в 1 символ )
ss = substring(text1, i, 1);


//если попалась "~" , переназначаем..
if (ss == "~") ss = chr(255);

P.S. Видимо, в самом редакторе Flash текстовая строка будет выглядеть "--- I?iaeaia aoeau y ---" и это нормально =)

Коды символов можно посмотреть в Windows: Пуск -> Стандартные -> Служебные -> Таблица символов . Внизу окна будет показан код выбранного символа. Windows XP, показывает код в шестнадцатиричной системе (к примеру, 0xE0) (преобразовать в 10-чную можно в калькуляторе)

Проблема неправильной интерпретации комментариев в экспертном режиме

Этот баг, наверное, стоил немалых усилий Macromedia :) Суть его состоит в том, что когда в экспертном режиме редактирования мы ставим комментарии справа от if или for, комментарий интерпретируется как инструкция, а содержимое скобок почему-то из них выпадает.

У вас есть следующего вида код:

if (s == 25) // попадание в нужную точку
{
gotoAndPlay(30);
}

Попробуйте перевести редактор в "нормальный" режим редактирования. У вас получится:

if (s == 25) {
// попадание в нужную точку
}
gotoAndPlay(30);

В следствие чего if будет жить отдельной жизнью, а gotoAndPlay отдельной. Вне зависимости от режима редактирования скрип выполняется одинаково: проверка параметра s не приносит никаких результатов, а gotoAndPlay вызывается всегда. Наверное, этот баг происходит оттого, что Flash интерпретирует комментарии как отдельную инструкцию. В любом случае, мы посоветуем вам быть осторожней с комментариями на одной строчке с другими инструкциями. Пишите лучше так:

// попадание в нужную точку
if (s == 25)
{
gotoAndPlay(30);
}

К сожалению, во Flash MX данная проблема сохранилась :(. Будьте бдительны, а то можете потерять часик-другой при отладке.

 
Автор: RAstudio
 
Оригинал статьи: http://woweb.ru/publ/11-1-0-79