Проблемы с использованием компонентов MXML в качестве классов ActionScript - PullRequest
0 голосов
/ 20 июня 2010

У меня есть два файла компонентов MXML и я пытаюсь работать с ними как с классами. Один из них имеет простую функцию:

GUIFriend.mxml

<mx:Script>
    <![CDATA[           
        public function createName(f:Friend) {
            return 'friendProfile: ' + f.uid;
        }
    ]]>
</mx:Script>

А другой пытается его использовать:

GUIFriendContainer.mxml

<mx:Script>
    <![CDATA[

        import GUIFriend;

        public function getFriendProfile(f:Friend):GUIFriend {
            var result:DisplayObject = getChildByName(GUIFriend.createName(f));
            if (result is GUIFriend) {
                return result;
            } else {
                // TODO: throw error
                return null;
            }
        }           
    ]]>
</mx:Script>

Но в строке, которая ссылается на функцию createName, я получаю две ошибки:

  1. вызов возможно неопределенного метода createName через ссылку с статический тип Class. - (обновление) Я забыл сделать метод статическим.
  2. неявное принуждение значения со статическим типом flash.display: DisplayObject для возможно не связанный тип GUIFriend.

Но я не вижу разумной причины для этого. Что не так с моим кодом?

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Для второй проблемы попробуйте

var result:DisplayObject = getChildByName(GUIFriend.createName(f)) as DisplayObject;

если у вас все еще есть проблемы, временно введите result как Object и установите точку останова отладки, чтобы проверить, что действительно возвращается после вызова getChildByName.

1 голос
/ 20 июня 2010

Вы пытаетесь вызвать метод экземпляра напрямую через имя класса.

Вам нужно либо сделать метод статическим, либо создать экземпляр класса и вызвать метод для этого.

...