Архів для категорії ‘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 Вы можете почитать тут (на английском). Она появляется ещё в некоторых случаях.

Малюнками, створеними руцями у Flash IDE, можна керувати за допомогою ActionScript

, 20, 2007

Усі наші малюнки у Flash IDE перетворюються в Shape. Звернутися до них можна за допомогою, наприклад, методу DisplayObjectContainer.getChildAt(). Цікаво, що усе намальоване стає одним екземпляром класу Shape, навіть якщо малюнки знаходяться в групах або являють собою Drawing Object або знаходяться на різних шарах. За одним винятком: якщо між малюнками немає мувікліпу.

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

, 16, 2007

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

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

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

MovieClip з “кнопковими” назвами кадрів (_up, _over, _down) перестає бути “чистим” MovieClip’ом

, 11, 2007

Якщо в MovieClip’і є кадр з назвою ‘_up’ та/або ‘_over’ та/або ‘_down’, то флеш при компіляції генерує клас для цього MovieClip’у, щоб він міг працювати як SimpleButton. Це можна перевірити подивившись результат методу toString() або функції getQualifiedClassName().

Ця поведінка доволі логічна, тільки мені не зрозуміло одне: якщо для того щоб MovieClip працював як SimpleButton потрібен клас, який реалізує цю можливість, то де приховується ця реалізація коли ми самі визначаємо клас для MovieClip’а в Linkage Properties?