flex 多 State(场景)下组件不能访问的解决方案


原因分析:

Flex 创建多个 State (场景)后 默认只会检查主State(场景)下的组件 对于在其他 State 下创建的组件在没有跳转到

该State(场景)之前是不可用的 

<?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" minWidth="955" minHeight="600" creationComplete="init()">
	
	<fx:Script>
		<![CDATA[


		function init():void{
			//无法访问存在于场景"State2"中的组件
			myText.text="NotFound";
		}	


			protected function btn_clickHandler(event:MouseEvent):void
			{
				// TODO Auto-generated method stub
			}

		]]>
	</fx:Script>
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<s:states>
		<s:State name="State1"/>
		<s:State name="State2"/>
	</s:states>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:Button x="135" y="228" label="按钮" id="btn" click.State2="btn_clickHandler(event)"/>
	
	<!-- myText 是存在于 State2 中-->
	<s:TextInput includeIn="State2" x="134" y="175" id="myText"/>

</s:Application>


解决方案:

<?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" minWidth="955" minHeight="600" creationComplete="init()">
	
	<fx:Script>
		<![CDATA[

		import mx.events.*;
			
		function init():void{
			//在主场景中加入场景变化监听器
			this.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE,stateChange);
		}
			
			function stateChange(event:StateChangeEvent):void{
				//当场景(State)跳转到"State2"时 操作组件
				if(event.newState=="State2"){
					myText.text="OK";
				}
			}	


			protected function btn_clickHandler(event:MouseEvent):void
			{
				currentState="State2";
			}

		]]>
	</fx:Script>
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<s:states>
		<s:State name="State1"/>
		<s:State name="State2"/>
	</s:states>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<s:Button x="135" y="228" label="按钮" id="btn" click="btn_clickHandler(event)"/>
	
	<!-- myText 是存在于 State2 中-->
	<s:TextInput includeIn="State2" x="134" y="175" id="myText"/>

</s:Application>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值