【转】谈flex切换状态

12 篇文章 0 订阅

切换状态、flex

认为有以下两种:States、visible

1、<mx:states></mx:states>

很多认为不需要讲呀,帖个例子,外加主要是看官方api啦。

例子:哈哈,帖个大例子,其实什么都没做呢

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
>
<mx:Style>
global{
   font-size:12px;
}
</mx:Style>
<mx:Script>
   <![CDATA[
   
  
    private function manageState(event:MouseEvent):void {
     if(event.target==addcatalogs){
     this.currentState = "mainFrame";
     }else{
     this.currentState="manageState";
     }
    }
   
   
   ]]>
</mx:Script>

<mx:states>
   <mx:State name="mainFrame" >
    <mx:AddChild relativeTo="{main}" position="lastChild">
     <mx:target>
      <mx:VBox>
       <mx:Label text="add catalog"/>
       <mx:Button label="aaaaaaaa"/>
      </mx:VBox>
     
     </mx:target>
    </mx:AddChild>
    <mx:SetProperty target="{show}" name="text" value=""/>
   
   </mx:State>
   <mx:State name="manageState">
    <mx:AddChild relativeTo="{main}" position="lastChild">
     <mx:target>
     
      <mx:Label text="manage catalog"/>
     </mx:target>
    </mx:AddChild>
    <mx:SetProperty target="{show}" name="text" value=""/>
   </mx:State>
</mx:states>
<mx:Fade id="fadeOut" duration="1000" alphaFrom="1.0" alphaTo="0.0"/>
    <mx:Fade id="fadeIn" duration="1000" alphaFrom="0.0" alphaTo="1.0"/>


<mx:ApplicationControlBar id="top" dock="true" width="100%" height="90">
   <mx:Canvas width="100%" height="100%" horizontalScrollPolicy="off"
   verticalScrollPolicy="off">
    <mx:Label text="Flex" x="0" y="0"/>
    <mx:Label text="Thinker" x="40" y="0"/>
    <mx:Label text="action" right="10"/>
   </mx:Canvas>
</mx:ApplicationControlBar>

<mx:Label bottom="10" right="10" text="@www.thinker168.com"/>

<mx:HDividedBox width="100%" height="100%" x="0" y="0">
   <mx:Accordion id="accordion" width="20%" height="100%">
            <!-- Define each panel using a VBox container. -->
            <mx:VBox label="分类管理">
                <mx:LinkButton label="添加分类" id="addcatalogs" click="manageState(event)" />
                <mx:LinkButton label="分类管理" id="managecatalogs" click="manageState(event)"
                />
            </mx:VBox>

            <mx:VBox label="产品管理">
            <mx:LinkButton id="addproducts" label="添加产品"/>
            <mx:LinkButton id="manageproducts" label="产品管理"/>
            </mx:VBox>
            <mx:VBox label="用户管理">
            <mx:LinkButton id="addusers" label="添加用户"/>
            <mx:LinkButton id="manageusers" label="管理用户"/>
            </mx:VBox>

          
        </mx:Accordion>
   <mx:VBox id="main" height="100%" width="80%">
    <mx:Label id="show" text="管理面板" x="10" y="10"/>
   
    <!--
    <view:catalogData paddingTop="0" paddingLeft="0" id="catalogManageView" visible="false"
    />
    -->
   </mx:VBox>
  

</mx:HDividedBox>
</mx:Application>

里面简单用了States,希望用到他的能用这个丰富这个例子把States吃透。哈哈,

2、visible 这个就不需要更多的说,并且认为例子都不需要了吧,哈哈,

下面还有个mxml和html传递的一个函数,

navigateToURL (flash.net)

对于在浏览器中运行的本地 内容,只有在 SWF 文件和包含该文件的网页(如果有)位于受信任的本地安全沙箱时,才允许进行指定“javascript:”伪协议的 navigateToURL() 方法调用(通过作为第一个参数传递的 URLRequest 对象)。一些浏览器不支持通过 navigateToURL() 方法使用 javascript 协议。而应考虑使用 ExternalInterface API 的 call() 方法在包含该内容的 HTML 页中调用 JavaScript

flex3.0和fb4.0相比,

state语法的改变

state语法变了,变得更加的有弹性和直接。你甚至可以根据上下文来针对性的改变你的状态。下面是重点:

1,只有状态被定义到了状态数组。

2,AddChild和RemoveChild,不能再用了。取而代之的是includeIn和excludeFrme属性 。这两个属性是组件的属性。

看例子吧!

这是flex3应用状态的方式。

<mx:states><mx:State name="submitState" basedOn="">
<mx:AddChild relativeTo="{loginForm}" >
<mx:Button label="submit" bottom="10" right="10"/>
</mx:AddChild>
<mx:RemoveChild target="{firstTextInput}"/>
</mx:State>
</mx:states>
<mx:TextInput id="firstTextInput" />
<mx:Canvas id="loginForm" />

这是flex4

<s:states>
<s:State name="submitState" />
</s:states>
<s:TextInput id="firstTextInput" excludeFrom="submitState" />
<s:Group id="loginForm" >
<s:Button label="submit" bottom="10" right="10" includeIn="submitState"/> </s:Group> 

3,setProperty,setStyle和setEvent被点语法取代了。

下面是flex3的做法

<mx:states>
<mx:State name="submitState" basedOn="">
<mx:SetProperty target="{submitButton}" name="label" value="submit" />
<mx:SetStyle target="{submitButton}" name="textDecoration" value="underline"/>
<mx:SetEventHandler target="{submitButton}" name="click" handler="trace('done');"/>
</mx:State>
<mx:State name="clearState" basedOn="">
<mx:SetProperty target="{submitButton}" name="label" value="clear" />
<mx:SetEventHandler target="{submitButton}" name="click" handler="emptyDocument()" />
</mx:State>
</mx:states>
 <mx:Button id="submitButton" /> 

下面是flex4的做法

<s:states>
<s:State name="submitState" />
<s:State name="clearState" />
</s:states>
<s:Button label.submitState="submit" textDecoration.submitState="underline"
click.submitState="trace('done')" click.clearState="emptyDocument()" label.clearState="clear" textDecoration.clearState="none"/>  

4,组件不能在无状态或空的状态。它默认的状态时第一个声明的状态


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值