Доступ к currentState из других файлов? - PullRequest
0 голосов
/ 14 мая 2011

ПРИМЕЧАНИЕ: Это не копия этого вопроса , поскольку ответ мне не помог.

У меня есть основной файл (Main.mxml),и у меня есть основной файл AS (main.as).main.as включен Main.mxml через <fx:Script source="main.as"/>.В main.as я хочу изменить currentState Main.mxml.Как мне поступить так?

То, что я уже пробовал:

  • this.parent.currentState = "c_main";
  • this.parentDocument.currentState = "c_main";
  • this.parentApplication.currentState = "c_main";
  • Ответ в на этот вопрос .

Ответы [ 3 ]

1 голос
/ 14 мая 2011

Это то, что вы пытаетесь сделать?


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);
}
0 голосов
/ 20 декабря 2011

Решение состоит в том, чтобы привязать 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";
} 

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>
0 голосов
/ 14 августа 2011

вместо

this.currentState = "c_main"; 

просто используйте

currentState = "c_main";

отлично работает!

...