Архів для категорії ‘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?