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

Оператор if керує поведінкою компілятора :)

четверг, январь 17, 2008

Якщо в тілі умовного оператора є не серьозна помилка, а умова така, що тіло ніколи не виконається, то компілятор нічого не скаже про помилку.

Приклад:

var t:Number;
if (false){
	t = "hello";
}

Якщо Ви змінете false на true, то отримаєте помилку “1067: Implicit coercion of a value of type String to an unrelated type Number.”.

Це стосується тільки ActionScript 3.0, тобто така поведінка має місце в Flash CS3 та Flex Builder 2. В ActionScript 2.0 такої блохи немає.

Також це не стосується умовного оператора ?:.

Оновлення: 

Деякі не серьозні помилки можуть призвести до такої-ж поведінки як в попередній блосі.

var t:Number;
if (false){
	1 == null;
}

Условный оператор ?: и оператор вычитания не дружат

четверг, январь 17, 2008

Имеем следующий код:

  1. trace(”begin”);
  2. var bool:Boolean = true;
  3. var flea:Number = -(bool ? 10 : 20);
  4. trace(”flea: “+flea.toString());

При попытке компиляции во Flex 2 вы получите

“An internal build error has occurred. Please check the Error Log.” или

“1131: Classes must not be nested.”. Т.е., ничего работающего Вы не получите.

А Flash Вам вообще ничего не скажет, но в output Вы не увидите даже “begin”.

Это относиться только к ActionScript 3.0. В ActionScript 2.0 приведенный код скомпилируется как нужно.

P.S. Про приведенную ошибку во Flex 2 Вы можете почитать тут (на английском). Она появляется ещё в некоторых случаях.

Корисна блоха з літералом Array в ActionScript 3.0

воскресенье, декабрь 16, 2007

В ActionScript 3.0 при створенні Array за допомогою літералу, можна залишати кому після останнього елементу і це не видасть помилки:

var myList:Array = [
"The",
"quick",
"brown",
"fox",
];

Блоху спіймав senocular, російською можете почитати на Flasher.ru.

Блоха з DisplayObjectContainer.getObjectsUnderPoint()

среда, декабрь 5, 2007

Функція getObjectsUnderPoint() працює тільки для stage, або для контейнера, який знаходиться на stage (тобто його parent == stage). Для контейнерів з більшою вкладеністю getObjectsUnderPoint() повертає порожній масив.

Блоха з 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…)