【你不知道的flex】-【state状态切换之初始化方法】

来源:互联网 发布:mac不能用酷狗输入法么 编辑:程序博客网 时间:2024/06/06 23:59

一:背景

flex全屏切换的效果

二:目的

1:状态2=》状态1

2:切换执行状态1的初始化方法(某方法,我们一般是init方法,你懂得)

注:看似很简单,那么来试试吧。

三:code

<mx:states>
  <mx:State name=”s1″  >
   <mx:AddChild position=”lastChild”   >
    <local:s1  id=”mainapp” horizontalCenter=”0″ verticalCenter=”0″ width=”100%” height=”100%”>
    </local:s1>
   </mx:AddChild>
   
  </mx:State>
  <mx:State name=”s2″>
   <mx:AddChild position=”lastChild”>
    <local:s2 />
   </mx:AddChild>
  </mx:State>
 </mx:states>

状态s1,状态s2两个状态

s1,s2是两个自定义组件

关键代码:请看红色部分

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Canvas xmlns:mx=”http://www.adobe.com/2006/mxml” width=”100%” height=”100%” creationComplete=”init()”addedToStage=”init2()” >
 
 
 <mx:Script >
  <![CDATA[
   
   
   private function init():void{
    trace("s1 init");
   }
   
   private function init2():void{
    trace("s1 init2");
   }
  ]]>
 </mx:Script>
 
 <mx:Label x=”106″ y=”115″ text=”S1=状态1″ fontSize=”36″ fontWeight=”bold”/>
 
 
</mx:Canvas>

 

四:输出

s1 init
s1 init2
s1 init2
s1 init2
s1 init2
s1 init2
s1 init2
s1 init2
s1 init2

init只是第一次执行,init2每次切换的时候都执行

五:结论

状态切换时候initialize,creationComplete的方法,都只是执行一次,多次切换,仅执行一次。

如果需要每次切换,请将方法写到addedToStage=“init()”。

六:源码下载
点我下载

原创粉丝点击