Статті, які підпадають під теґ ‘ActionScript 2.0’

Блоха з parseFloat()

, 22, 2007

Пишемо в першому кадрі:

var n:Number = parseFloat("1.2.3.4");
trace("n: " + n);

В output бачимо:

Для ActionScript 1.0:

n: undefined

Для ActionScript 2.0:

n: 1.234

Для ActionScript 3.0:

n: 123.4

Деякі пояснення далі
(more…)

swapDepths + prevFrame = duplicateMovieClip

, 19, 2007

У нас є:

  1. .fla файл (AS2.0) з блохою (мувікліп з ім’ям flea на сцені).
  2. Код у першому кадрі:
    flea._x = 113; // щоб побачити ефект
    flea.swapDepths(1000);
    gotoAndStop(3);
  3. Код у третьому кадрі:
    prevFrame();

Маємо:

Ще однин, такий самий, мувікліп.

Чому?

Перше, що приходить до мозку: при переході на попередній кадр Flash player чомусь не бачить, що кліп вже існує (бо він змінив глибину), але на таймлайні він повинен бути, і Flash player вирішує створити ще примірник.

Зауважте, що якщо в першому кадрі змінити ім’я мувікліпа (_name), то на другому кадрі отримаємо два, так якби ми створили дублікат. Але усі властивості будуть такіж самі, як на першому кадрі.

Цей ролик потребує Flash Player 9

Завантажити приклад

Оновлення від 22 листопада 2007 р.

Ми знаємо, що коли ми кладемо символ з бібліотеки на сцену (в Flash IDE), то у цього символа глибина буде від’ємна. Тож, якщо ми в поданому прикладі перекладемо мувікліп на від’ємну глибину, то ефекту дублювання не буде. Тобто, Flash Player “дивиться” тільки на від’ємні глибини. Спіймати блоху допоміг Ілля Панін. Велика йому дяка! :)

Ми також знаємо, що на мувікліп, що лежить на від’ємній глибині, не діє функція removeMovieClip(). Але теж саме має місце також і для дуже великих глибин. Але тут іще одна блоха. За словами адобовців ми маємо у своєму роспорядженні 16000 шарів. Але, навіть, при глибині 1000 000 000 (один мільярд) мувікліп відаляється (це не каже, що в інших випадках, крім видалення, все буде працювати). Більше того, я виявив, що немає чіткої числовой межі, коли мувікліп відаляється, а коли ні. Наприклад, на глибині 2 130 690 031 – видаляється, на одиницу вище вже не видаляється, а приблизно з 6-ти мільярдів знову видаляеться. Найвища глибина, що я знайшов, на якій відаляються – 199 699 185 647. Ще було помічено, що віставляючи велику глибину, мувікліп насправді опинявся на іншій, коли можливо видалати – на додатній, коли не можливо – від’ємній глибині (тому і не можливо відалити :) ).