Глюки Flash

Вот пара глюков, которые нам удалось выявить во Flash 5. На деле их гораздо больше, но не все удается "поймать". Итак...

Проблема "Я"

Данная проблема относится только ко 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 данная проблема сохранилась :(. Будьте бдительны, а то можете потерять часик-другой при отладке.

Copyright © 2002-2006 Максим Комогоров. Все права защищены.
Замечания, вопросы и предложения направляйте
по адресу: webscript@pisem.net
Поиск по сайту
О проекте
Архив
Hosted by uCoz