mxml наследование во Flex.как работает "instanceof" и "is"? - PullRequest
1 голос
/ 05 июля 2010

Ранее я использовал следующую структуру:

Canvas -> Screen1
Canvas -> Screen2

Когда я чувствую потребность в общей логике в моем приложении, я делаю следующее:

Canvas -> Screen
Screen -> Screen1
Screen -> Screen2

Поэтому, когда я пытаюсь применить это в моем коде

if(child is Screen){
    return child.localToGlobal(new Point()).x;
}

Это не работает! Когда я вижу в отладчике, child имеет тип «Screen2», но «child is Screen» возвращает мне false (и «child instanceof Screen» тоже). Когда я применяю ключ компилятора: "-keep-генерируемый-actioncript", я вижу Screen2-generated.as, и он содержит

public class Screen3 extends screens.Screen

Заранее спасибо Извините за мой уродливый английский =)

1 Ответ

2 голосов
/ 05 июля 2010

Я думаю, что проблема связана с этим конкретным именем - уже существует класс с именем Screen (во flash.display - http://livedocs.adobe.com/flex/3/langref/flash/display/Screen.html),, и Flex проверяет, является ли он экземпляром исходного экрана.

Вы можете попробовать две вещи:

1) Переименовать свой класс Screen в CustomScreen и повторить попытку.

2) Проверить, является ли дочерний элемент экземпляром вашего класса, указав полный путь, например.if (child is screens.Screen)

...