将MXML组件用作ActionScript类的问题

时间:2010-06-20 07:52:16

标签: flex actionscript-3 mxml

我有两个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. 调用可能未定义的方法 通过引用创建名称 静态类型。 - (更新)我忘了将方法设为静态。
  2. 隐性胁迫 具有静态类型的值 flash.display:DisplayObject到 可能不相关的类型GUIFriend。
  3. 但我认为没有合理的理由。我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

对于第二个问题,请尝试

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

如果仍然有问题,请暂时将结果输入为Object并输入调试断点以检查从getChildByName调用中真正返回的内容。

答案 1 :(得分:1)

您正试图通过类名直接调用实例方法。

您需要将方法设为静态或创建类的实例并在其上调用方法。