Apache flex 将MXML组件用作ActionScript类的问题

Apache flex 将MXML组件用作ActionScript类的问题,apache-flex,actionscript-3,mxml,Apache Flex,Actionscript 3,Mxml,我有两个MXML组件文件,并尝试将它们作为类使用。其中一个具有简单的功能: GUIFriend.mxml <mx:Script> <![CDATA[ public function createName(f:Friend) { return 'friendProfile: ' + f.uid; } ]]> </mx:Script> <mx:Script>

我有两个MXML组件文件,并尝试将它们作为类使用。其中一个具有简单的功能:

GUIFriend.mxml

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

另一个尝试使用它:

GUIFriendContainer.mxml

<mx:Script>
    <![CDATA[           
        public function createName(f:Friend) {
            return 'friendProfile: ' + f.uid;
        }
    ]]>
</mx:Script>
<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”函数的行中,我得到两个错误:

  • 调用可能未定义的方法 createName通过引用创建 静态类型类(更新)我忘了将方法设置为静态。
  • 隐性胁迫 具有静态类型的值的 flash.display:将对象显示到 可能是不相关的朋友

  • 但我看不出有什么合理的理由。我的代码怎么了?

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


    您需要使该方法成为静态的,或者创建一个类的实例并在该实例上调用该方法。

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


    您需要使该方法成为静态的,或者创建该类的实例并调用该方法。

    对于第二个问题,请尝试

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

    如果仍然存在问题,请临时键入result作为Object并输入调试断点,以检查getChildByName调用真正返回的内容。

    有关第二个问题,请重试

    var result:DisplayObject = getChildByName(GUIFriend.createName(f)) as DisplayObject;
    
    如果仍然存在问题,请临时键入result作为Object,并输入调试断点,以检查getChildByName调用真正返回的内容