【问题标题】:Calling one MXML from AS code从 AS 代码调用一个 MXML
【发布时间】:2011-02-23 21:41:03
【问题描述】:

我正在创建一个 AIR 应用程序,mainapp.mxml 有一个按钮和 VBOX。单击按钮时,child.mxml 应显示在 VBOX 中。

如果代码也在 flex 中,我将不胜感激,因为我可以很容易地修改标签。

谁能帮我怎么做!提前致谢

【问题讨论】:

    标签: apache-flex actionscript air


    【解决方案1】:

    为按钮添加一个点击处理程序,在该处理程序中创建一个 child 实例并将其添加到 VBox:

    <mx:Button id="myButton" label="My Button" click="myButton_clickHandler(event)"/>
    

    和处理程序:

    function myButton_clickHandler(event:Event):void {
      var child:Child = new Child();
      myVBox.addChild(child);
    }
    

    【讨论】:

    • 谢谢。但是当我执行代码 ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的孩子时出现一个小警告。在 flash.display::DisplayObjectContainer/getChildIndex() 在 mx.managers::SystemManager/getChildIndex()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:1665]在 mx.managers.systemClasses::ActiveWindowManager/mouseDownHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\systemClasses\ActiveWindowManager.as:471]
    【解决方案2】:

    如果您使用的是 Flex 4,您也可以使用 states 来处理这个问题。该按钮只会更改状态,并且 VBox 将包含在您设置的任何状态中:

    <fx:Script>
     <![CDATA[
        private function changeState():void {
            currentState = (currentState == "default") ? "showVBox" : "default";
        }
     ]]>
    </fx:Script>
    <s:states>
      <s:State name="default"  />
      <s:State name="showVBox" />
    </s:states>
    
    <mx:VBox id="myVBox" includeIn="showVBox" />
    <mx:Button label="Show/Hide VBox" click="changeState()" />
    

    在我的示例中,单击按钮只是在“默认”和“showVBox”之间交换状态。这允许播放器为您添加/删除 VBox,而不必担心自己做。

    免责声明:我没有测试上面的代码,所以命名空间可能是关闭的:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多