currentStateChange и currentStateChanging не запускаются во Flex - PullRequest
0 голосов
/ 15 декабря 2009

Я хотел использовать событие currentStateChange в своем приложении, но какой бы код не вызывался в этом событии, он не выполнялся, поэтому я подумал, что что-то не так с моим кодом, поэтому я попытался протестировать его на одном из примеров в Adobe Live Docs. Итак, я взял этот пример здесь

<mx:states>
    <mx:State name="One">
        <mx:SetProperty target="{p1}" name="x" value="110"/>
        <mx:SetProperty target="{p1}" name="y" value="0"/>
        <mx:SetProperty target="{p1}" name="width" value="200"/>
        <mx:SetProperty target="{p1}" name="height" value="210"/>
        <mx:SetProperty target="{p2}" name="x" value="0"/>
        <mx:SetProperty target="{p2}" name="y" value="0"/>
        <mx:SetProperty target="{p2}" name="width" value="100"/>
        <mx:SetProperty target="{p2}" name="height" value="100"/>
        <mx:SetProperty target="{p3}" name="x" value="0"/>
        <mx:SetProperty target="{p3}" name="y" value="110"/>
        <mx:SetProperty target="{p3}" name="width" value="100"/>
        <mx:SetProperty target="{p3}" name="height" value="100"/>
    </mx:State>
    <mx:State name="Two">
        <mx:SetProperty target="{p2}" name="x" value="110"/>
        <mx:SetProperty target="{p2}" name="y" value="0"/>
        <mx:SetProperty target="{p2}" name="width" value="200"/>
        <mx:SetProperty target="{p2}" name="height" value="210"/>
        <mx:SetProperty target="{p3}" name="x" value="0"/>
        <mx:SetProperty target="{p3}" name="y" value="110"/>
        <mx:SetProperty target="{p3}" name="width" value="100"/>
        <mx:SetProperty target="{p3}" name="height" value="100"/>
    </mx:State>
</mx:states>

<!-- Define Transition array with one Transition object.-->
<mx:transitions>
    <!-- A transition for changing from any state to any state. -->
    <mx:Transition id="myTransition" fromState="*" toState="*">
        <!-- Define a Parallel effect as the top-level effect.-->
        <mx:Parallel id="t1" targets="{[p1,p2,p3]}">
            <!-- Define a Move and Resize effect.-->
            <mx:Move  duration="400"/>
            <mx:Resize duration="400"/>
        </mx:Parallel>
    </mx:Transition>
</mx:transitions>

<!-- Define the Canvas container holding the three Panel containers.-->
<mx:Canvas id="pm" width="100%" height="100%" >
    <mx:Panel id="p1" title="One" 
            x="0" y="0" width="100" height="100"
            click="currentState='One'" currentStateChange="Alert.show('change')" currentStateChanging="Alert.show('changing')" >
        <mx:Label fontSize="24" text="One"/>
    </mx:Panel>

    <mx:Panel id="p2" title="Two" 
            x="0" y="110" width="100" height="100"
            click="currentState='Two'" >
        <mx:Label fontSize="24" text="Two"/>
    </mx:Panel>

    <mx:Panel id="p3" title="Three" 
            x="110" y="0" width="200" height="210" 
            click="currentState=''" >
        <mx:Label fontSize="24" text="Three"/>
    </mx:Panel>
</mx:Canvas>

И все, что я сделал, это поместил оповещение в событиях currentStateChange и currentStateChanging на панели One, и я не получил оповещения при нажатии на панель. Я также попытался заменить встроенный код вызовом функции, которая делает предупреждение также ничего не произошло.

Что не так с тем, что я пытаюсь сделать здесь?

Спасибо

1 Ответ

1 голос
/ 15 декабря 2009

Вы прослушиваете изменения состояния p1, но никогда не меняете состояние этой панели: p1.currentState остается прежним. Состояния не наследуются автоматически или что-то в этом роде. Если вы хотите увидеть изменение состояния, добавьте прослушиватель в контейнер, для которого вы устанавливаете состояние. В примере, на который вы ссылаетесь, он указан в теге приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...