Архів для категорії ‘ActionScript 3.0’

flash.debugger.enterDebugger()

Thursday, March 13, 2008
  1. import flash.debugger.enterDebugger;
  2. enterDebugger();

Спробуйте під час дебагу :)
Поведінка така ж сама як при breakpoint.

Дякую Ростику за інформацію!

Dictionary не підтримує QName

Wednesday, March 12, 2008
  1. import flash.utils.*;
  2. var d:Dictionary = new Dictionary();
  3. var qn:QName = new QName(new Namespace(‘ns’), ‘name’);
  4. d[qn] = true;

Останній рядок коду видасть помилку:
ReferenceError: Error #1056: Cannot create property ns::name on flash.utils.Dictionary.

Тобто неможливо створити змінну у Dictionary типу QName.

А Ви знаєте які ще типи  не підтримує Dictionary?

Дякую Олегові Галабурда (він же a_[w]) за інформацію!

Як зрозуміти, що подія виконалась саме на передплатнику?

Tuesday, March 11, 2008

Іноді нам потрібно знати чи подія виконалась на передплатнику чи прийшло внаслідок bubbling. Наприклад, нам потрібно відслідкувати натискання миші на stage, але нам потрібно знати напевно, що користувач натиснув саме на stage, а не на його child. Авжеж, ми можемо зробити

stage.mouseChildren = false;

але це частіше всього не підходить.

Можна зробити двома рівносильними способами.

В обробнику для stage виконаємо перевірку на рівність event.target з event.currentTarget:

  1. function stageClickHandler(event:MouseEvent):void
  2. {
    1. if(event.target != event.currentTarget)
      1. return;
    1. // Your code here
  3. }

Або перевіримо яка наразі фаза event flow. Якщо вона дорівнює 2 (target phase), тоді подія виконалась саме на stage. Інакше припиняємо виконання обробника:

  1. function stageClickHandler(event:MouseEvent):void
  2. {
    1. if(event.eventPhase != 2)
      1. return;
    1. // Your code here
  3. }

Докладніше про подійну модель в ActionScript 3.0 ви можете почитати у доповіді Кості Ковальова (російською).

Загадка про Date

Wednesday, March 5, 2008
trace( Date( new Date() ) is Date );

Що буде в output?

Далі відповідь

(more…)

Object та його методи

Sunday, March 2, 2008

Усі методи класу Object створені динамічно у його властивості prototype. Тобто використано прототипний тип спадкування. Тобто Вам не потрібно використовувати ключове слово override для того, щоб перевантажити метод.

describeType для Object показує, що три методи (hasOwnProperty, isPrototypeOf, propertyIsEnumerable) підпадають до класового типу спадкування. Алей для них не потрібно використовувати override.

Оновлення:

Практично теж саме з Array. (Є іще класи, які підпадають під вище сказане, але переважно вони є final класами)

Далі результат роботи trace(describeType({}));

(more…)