Показать сообщение отдельно
Старый 18.07.2002, 01:37
  № 1  
Suhoff
Guest

Сообщений: n/a
По умолчанию Занимательный ActionScript (ч.III)

В FrameActions пишем такой скрипт:

0[0]=0(0);

Хотя смысла в этом скрипте нет никакого, но такие выражения допускаются в AS (!!!!). Запускаем на выполнение... получаем swf... декомпилируем flasm'ом- получаем:

frame 0
push 0.0, 0.0, 0.0, 1
callFunction
setMember
end // of frame 0

ОПА!!! Откуда взялась единица????!!!! В выражении её нет и в помине!!!
Вот если бы мы записали выражение в виде:

0[0]=1(0);

тогда всё было бы точно, а так получается, что в AS 0==1 (!!!) Забавно...
Более того.... можно записать это выражение в виде

0[0]=N(0)

где N- числовой литерал (любое целое число) и при этом результат всё равно будет один и тот же:

frame 0
push 0.0, 0.0, 0.0, 1
callFunction
setMember
end // of frame 0

те в AS любое целое число равно единице!!!!
.......
Как говорила Алиса "... чем дальше - тем чудесатее и чудесатее..."

PS. Кстати... Сравнение - 0[0]==0(0) даёт true!! Те одна полная фигня равна другой полной фигне... Отсюда вывод - программе по-фигу какую фигню Вы в неё напишите.....