从组件访问主要功能

时间:2010-12-06 03:05:04

标签: flex flash actionscript

如何获得“关闭”按钮以从组件内部向外部声明运行runFunction()FxGlobals.topLevelApplication似乎没有为此工作。

<fx:Declarations>
        <fx:Component className="MyNativeWindow">
            <s:Window>
                <s:BorderContainer width="100%" height="100%">
                <s:backgroundFill>
                <s:LinearGradient>
                    <s:GradientEntry color="0x555555"/>
                    <s:GradientEntry color="0x777777"/>
                    </s:LinearGradient>
                </s:backgroundFill>
                <mx:Button y="263" x="420" label="close" click="runFunction();this.close()"/>   
                </s:BorderContainer>
            </s:Window>
        </fx:Component>
    </fx:Declarations>

1 个答案:

答案 0 :(得分:1)

首先,你不应该这样做,稍后会更多......

如果你必须这样做,(说你必须出于某种商业原因)

您应该可以像这样访问顶级应用程序......

<fx:Declarations>
    <fx:Component className="MyNativeWindow">
        <s:Window>
            <s:BorderContainer width="100%" height="100%">
            <s:backgroundFill>
            <s:LinearGradient>
                <s:GradientEntry color="0x555555"/>
                <s:GradientEntry color="0x777777"/>
                </s:LinearGradient>
            </s:backgroundFill>
            <mx:Button y="263" x="420" label="close" click="(FlexGlobals.topLevelApplication as MyApplicationType).runFunction();this.close()"/>   
            </s:BorderContainer>
        </s:Window>
    </fx:Component>
</fx:Declarations>

用您的应用类型替换MyApplicationType

现在,继续我的,不要这样做注意,上面。您的组件不应该以这种方式调用依赖函数,而应该使用处理函数处理此按钮click事件,然后触发组件级事件,该事件在组件树的每个级别处理,所有如果应该处理此事件,那么应用程序的方式。

然而,只是告诉你在不知道你的应用程序结构的其他部分的情况下这样做会没有多大帮助,你可能需要在理解为什么要清理它之前创建它。

但作为一个有用的提示,总是尝试通过将功能职责分成适当的类来模块化您的应用程序。