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

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