Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Создание State программно (http://www.flasher.ru/forum/showthread.php?t=101084)

Pow R. Toc H. 11.09.2007 01:47

Создание State программно
 
Вот код приложения, функция createNewState - создаёт новое состояние:
Код:

<?xml version="1.0"?>
<!-- states\StatesAS.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="createNewState()" >

   
    <mx:Script>
        <![CDATA[
                import mx.states.SetProperty;
                import mx.states.State;
        public var stateMore:State;
       
        public function createNewState():void{
                stateMore = new State();
                stateMore.name = "More";
                var setPr:SetProperty = new SetProperty();
                setPr.target = 'Panel';
                setPr.name = 'height';
                setPr.value = 300;
                stateMore.overrides.push(setPr);
                states.push(stateMore);
        }

                public function panelResize():void{
                        if(currentState == 'More'){
                                panelResize_tr.fromState='More';
                                panelResize_tr.toState='*';                               
                        }
                        else{
                                panelResize_tr.toState='More';
                                panelResize_tr.fromState='*';                                                               
                        }
                        currentState = currentState=='More'?'':'More';
                }

        ]]>
    </mx:Script>

    <mx:transitions>
            <mx:Transition id="panelResize_tr" fromState="*" toState="More">
                    <mx:Parallel target="{Panel}">
                            <mx:Resize duration="200">                                   
                            </mx:Resize>
                    </mx:Parallel>
            </mx:Transition>
    </mx:transitions>
   
    <mx:Panel width="250" height="200" layout="absolute" id="Panel" click="panelResize()">
    </mx:Panel>
</mx:Application>

но по чему то не хочет реагировать.. если вместо функции createNewState использовать
Код:

<mx:states>
<mx:State name="More">                   
<mx:SetProperty target="{Panel}" name="height" value="272"/> 
</mx:State>
</mx:states>

то всё работает...

miramax 11.09.2007 02:10

Код:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="createNewState()" >

   
    <mx:Script>
        <![CDATA[
                import mx.states.SetProperty;
                import mx.states.State;
        public var stateMore:State;
       
        public function createNewState():void{
                stateMore = new State();
                stateMore.name = "More";
                var setPr:SetProperty = new SetProperty();
                setPr.target = this.panel;
                setPr.name = 'height';
                setPr.value = 300;
                stateMore.overrides.push(setPr);
                states.push(stateMore);
               
        }

                public function panelResize():void{
                       
                        if(currentState == 'More')
                        {
                                panelResize_tr.fromState='More';
                                panelResize_tr.toState='*';                               
                        }
                        else{
                                panelResize_tr.toState='More';
                                panelResize_tr.fromState='*';                                                               
                        }
               
                        currentState = currentState=='More'?'':'More';
                }

        ]]>
    </mx:Script>

    <mx:transitions>
            <mx:Transition id="panelResize_tr" fromState="*" toState="More">
                    <mx:Parallel target="{Panel}">
                            <mx:Resize duration="200">                                   
                            </mx:Resize>
                    </mx:Parallel>
            </mx:Transition>
    </mx:transitions>
   
    <mx:Panel width="250" height="200" layout="absolute" id="panel" click="panelResize()">
    </mx:Panel>
</mx:Application>


Pow R. Toc H. 11.09.2007 02:21

здорово.. заработало...


Часовой пояс GMT +4, время: 01:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.