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

flash.debugger.enterDebugger()

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

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

Благодарю Ростика за информацию!

Dictionary не поддерживает QName

, 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]) за информацию!

Как понять, что событие произошло именно на подписчике?

, 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

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

Что будет в output?

Ответ далее

(more…)

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

, 2, 2008

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

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

Оновлення:

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

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

(more…)