Опасные FlashVars
Декабрь 5, 2007 at 12:02 пп 3 комментариев(я)
Flashvars долго казались мне самой безобидной субстанцией.
Однако и у них есть пара опасных моментов.
- Не забываем, что все данные, переданные через flashvars – это String.
То есть если нужно передать число или булеву переменную – будьте добры, используйте приведение типов. И лучше руками, не полагаясь на автомат. - Недавно обнаруженная грабля.
Допустим у нас есть флешка, на основном таймлайне которой мы импортируем пакет flash.filters.* . Или не импортируем на таймлайн, но создаем переменную некоего класса SomeClass, в коде которого мы как раз и производим этот импорт.
Так вот ежели мы передадим flashvar flash=kill_my_package, то мы наглухо убъем доступ к пакету flash. Точно так же можно убить пакеты mx, ru, com и все необходимое )). Однако если мы будем импортировать пакеты на временной линейке любого другого мувиКлипа, лежащего на основной линейке, то все будет работать.
А вывод прост: следим за именами переменных, откуда бы они не приходили. Потому как и во вложенном клипе можно убить доступ к пакету, просто объявив в нем переменную
var flash:Boolean = false;
_________
Блог переехал.
Комментарии оставлять здесь.
Entry filed under: ActionScript, AS2.0, Грабли. Tags: грабли.

1.
concretica | Декабрь 5, 2007 в 3:28 пп
Ок.
2.
ﺔstﺔlﺔvistﺔ | Декабрь 8, 2007 в 4:36 пп
Сейчас придет, сами знаете кто, и скажет что нужно всегда юзать _global
import flash.geom.*;
var flash = “flash.PackageKiller”;
var pt:Point = new _global.flash.geom.Point(100,0);
3.
murejib | Декабрь 8, 2007 в 6:47 пп
Сами знаете кто может использовать глобал где угодно)
Я же иду по пути самурая и сознательного отказа от глобалов и рутов, ибо истинный флеш самурай должен помнить 1000 и один флеш капкан и еще столько же багов и умело обходить оные.