Архів для категорії ‘Знайдені блохи’

Flex Builder іноді “не бачить” класу

неділя, Червень 15, 2008

Якщо умовою для оператору if є результат функції, та тіло оператору починається з дужки “(”, то Flex Builder не підкаже ім’я класу в якому є подібний if.

Ось приклад:

  1. package
    1. {
    1. public class Flea
    2. {
      1. public function Flea()
      2. {
        1. if(this.hasOwnProperty(”startJump”))
          1. (this as Object).startJump()
      3. }
    3. }
  2. }

В іншому класі того ж проекту при натисканні Ctrl+Space ми не побачимо клас Flea.

1.gif

Також в самому класі не будуть працювати більшість можливостей Flex Builder, як наприклад перехід по F3, або Ctrl+o.

Такого не станеться, якщо використовувати фігурні дужки для обрамлення тіла оператора if :)

  1. if(this.hasOwnProperty(”startJump”))
  2. {
    1. (this as Object).startJump()
  3. }

Результат:

2.gif

getter/setter + (increment || decrement) = жук у компіляторі

п’ятниця, Травень 30, 2008

Маємо змінну задану за допомогою get та set функцій:

  1. var _num:Number = 0;
  2. function get num():Number
  3. {
    1. return _num;
  4. }
  5. function set num(value:Number):void
  6. {
    1. _num = value;
  7. }

Створюємо іще одну змінну:

var num2:Number = num++;

Отримуєм помилку компіляції:

1067: Implicit coercion of a value of type void to an unrelated type Number.

Вважаю що виходить так:

var num2:Number = set num(get num() +1);

А так як результат set num() є void, то ми і отримуємо помилку.

[AIR] NativeMenu + SystemTrayIcon - MouseEvent.RIGHT_CLICK = та що з маком

вівторок, Квітень 15, 2008

Так, в AIR є можливість використовувати своє контекстне меню, додавати вкладені меню і т.д. Ми можемо навіть відображати його, коли нам завгодно, а не тільки по правому кліку. Для цього у класу NativeMenu є метод:

  1. NativeMenu.display(stage:Stage, stageX:Number, stageY:Number):void

Все було б добре, але є одне але :(

Як Ви бачите метод display() приймає першим параметром Stage, але у SystemTrayIcon немає stage :( Тобто, якщо нам потрібно відобразити меню біля трею (за допомогою display()), то треба використовувати Application.application.stage, але тоді треба бути поміркувати як розташувати меню :) Адже координати SystemTrayIcon невідомі…

E4X синтаксис для не XML

п’ятниця, Березень 14, 2008

При використанні синтаксису E4X для не XML об’єктів, компілятор Вам нічого не скаже, але в run-time отримаєте помилку.

var obj:Object = {a:1};
trace( obj.(a == 1) );

TypeError: Error #1123: Filter operator not supported on type Object.

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