0

注:答えが役に立たなかったので、これはこの質問のコピーではありません。

メイン ファイル (Main.mxml) とメイン AS ファイル (main.as) があります。main.as は、 を介して Main.mxml に含まれ<fx:Script source="main.as"/>ます。main.as で、Main.mxml の currentState を変更したい。どうすればこれを行うことができますか?

私がすでに試したこと:

  • this.parent.currentState = "c_main";
  • this.parentDocument.currentState = "c_main";
  • this.parentApplication.currentState = "c_main";
  • この質問の答え。
4

3 に答える 3

1

これはあなたがやろうとしていることですか?


main.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       addedToStage="_onStaged(event)"
                       stateChangeComplete="_stateChangeCompleteHandler(event)">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:states>
        <s:State name="c_main"/>
    </s:states>

    <fx:Script source="main.as" />
</s:WindowedApplication>

main.as:

import flash.events.Event;
import mx.events.FlexEvent;


// ActionScript file
private function _onStaged(event:Event = null):void
{
    this.currentState = "c_main";
}

protected function _stateChangeCompleteHandler(event:FlexEvent):void
{
    trace("the state was set to "+this.currentState);
}
于 2011-05-14T03:45:22.017 に答える
0

解決策は、アプリケーションの currentState を変数にバインドすることです。例/概念実証については、以下を参照してください (Flex 4.6 でテストおよび動作):

Main.as:

[Bindable]
public var curState:String = "c_main";

protected function swapState():void
{
if(curState=="c_main")
    curState="c_main2";
else
    curState="c_main";
} 

メイン.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx"
           currentState="{curState}">   
  <s:states>
    <s:State name="c_main"/>
    <s:State name="c_main2"/>
  </s:states>

  <fx:Script source="Main.as"/>
  <s:VGroup>
 <s:Label text="1" includeIn="c_main" />
 <s:Label text="2" includeIn="c_main2" />
 <s:Button label="switch" click="swapState()"/>
  </s:VGroup>
</s:Application>
于 2011-12-20T19:09:04.487 に答える
-1

それ以外の

this.currentState = "c_main"; 

使用するだけ

currentState = "c_main";

それはうまくいきます!

于 2011-08-14T17:41:20.687 に答える