Опасные FlashVars
декабря 5, 2007
Flashvars долго казались мне самой безобидной субстанцией.
Однако и у них есть пара опасных моментов.
- Не забываем, что все данные, переданные через flashvars - это String.
То есть если нужно передать число или булеву переменную - будьте добры, используйте приведение типов. И лучше руками, не полагаясь на автомат. - Недавно обнаруженная грабля.
Допустим у нас есть флешка, на основном таймлайне которой мы импортируем пакет flash.filters.* . Или не импортируем на таймлайн, но создаем переменную некоего класса SomeClass, в коде которого мы как раз и производим этот импорт.
Так вот ежели мы передадим flashvar flash=kill_my_package, то мы наглухо убъем доступ к пакету flash. Точно так же можно убить пакеты mx, ru, com и все необходимое )). Однако если мы будем импортировать пакеты на временной линейке любого другого мувиКлипа, лежащего на основной линейке, то все будет работать.
А вывод прост: следим за именами переменных, откуда бы они не приходили. Потому как и во вложенном клипе можно убить доступ к пакету, просто объявив в нем переменную
var flash:Boolean = false;
Entry Filed under: AS2.0, ActionScript, грабли
3 комментария Add your own
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 и один флеш капкан и еще столько же багов и умело обходить оные.
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed