Flash - статьи



              

Об объектной модели ActionScript - часть 2


Вы, возможно, захотите спросить, почему я использую while, а не for. А потому что в for у меня проблемы. Может глюк, а может мне просто ума не хватает. В любом случае, в теории есть только три программных конструкции: последовательность, выбор и итерация — так что разницы никакой. Как видите, код компактный, на вид приятный (и при этом — работающий). Есть пару "хакерских" местечек, например вычисление той же битовой маски или "почему сначала делится на w, а потом умножается". Честно говоря, я и сам ничего не понимаю, просто это вот работает — значит угадал что-то.

Использование этого объекта такое (числа — номера кадров):

1 #include "coord.as"
   #include "rev.as"
   callback=function(arg){return Math.cos(arg);}
   rev1=new rev(10,callback,1,1);
   rev2=new rev(6,callback,2,2);
2 cnt=0;
   while (cnt<REV1.GETLENGTH()*3) {
     dt(cnt*rev1.GetSlice(),rev1.GetValue(cnt),0x00f);
     Cnt++; }
3 cnt=0;
   while (cnt<REV2.GETLENGTH()*3) {
     dt(cnt*rev2.GetSlice(),rev2.GetValue(cnt),0x00f);
     Cnt++; }
4 Stop();

Как видите, мы создаем два объекта, причем отличаются эти объекты тремя параметрами: порядком революции (количеством точек на оборот), амплитудой и частотой. Кроме того, мы проверяем три оборота, чтобы оценить, что наш объект корректно отсекает лишние биты и не ошибается при доступе к массиву. Графически результат выглядит так:

Наши объекты работают ожидаемым образом

Два глюка, кроме for, были обнаружены при работе с as-файлами. Во-первых, вы обязательно должны завершить последнюю строку переводом курсора — иначе ошибки, ошибки... Такие глупости когда-то встречались в некоторых утилитах UNIX — и, как видно, ходят по миру до сих пор. Второе — в режиме Ctrl+Enter какие-то вещи не меняются при изменении внешних файлов. То есть алгоритм обновления кэша включаемых файлов не работает как следовало было. Если ваши изменения в тексте программы не имеют эффекта, попробуйте проверять по Ctrl+F12 — должно сработать. Кстати, и производительность в браузере раза в два больше. Видимо, отключается какая-то отладка или что-то в том же роде.




Содержание  Назад  Вперед