`
燮羽天翔
  • 浏览: 110261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

改变ViewStack子对象的创建策略 && 如何强制Flex控件显示手型光标(hand cursor)

    博客分类:
  • Flex
阅读更多

ViewStack 在默认情况下,所有子对象只有在第一次显示的时候才被实例化

  <mx:ViewStack id="mainview" width="80%" height="80%">
    <ui:APanel id="a_panel" creationComplete="trace(1)">
    </ui:APanel>
    <ui:BPanel id="b_panel" creationComplete="trace(2)">
    </ui:BPanel>
    
  </mx:ViewStack>

 

只会trace出来 1

这个叫做 deferred instantiation ,是为了性能考虑,需要的时候才实例化

但有些时候,没显示的子对象,需要监听外部的一些事件 ...但没被实例化当然监听不到啊 ? 所以以前写这块的地方要额外注意..

今天才发现ViewStack原来有继承Container这个叫做 creationPolicy 的属性~~ ,可以设置子对象默认的创建策略

加一个 creationPolicy="all" ,就可以让ViewStack建立的时候把所有子对象都实例化,哈哈,这样就可以监听到外边的事件了 ~~~

<mx:ViewStack creationPolicy="all" id="mainview" width="80%" height="80%">
    <ui:APanel id="a_panel" creationComplete="trace(1)">
    </ui:APanel>
    <ui:BPanel id="b_panel" creationComplete="trace(2)">
    </ui:BPanel>
    
  </mx:ViewStack>

 

这样,1,2都被trace出来了 :)

具体见帮助文档 Container的 creationPolicy 属性

转自N神AS研究所

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

有时候需要强制某个控件,比如标签(Label)强制显示手型光标(hand cursor),一般情况下可以使用useHandCursor = true来控制。

<mx:Label useHandCursor="true" />

但是有时候,在某些控件上会不管用,这时可以再设置以下几个属性:

<mx:Label useHandCursor="true" buttonMode="true"  mouseChildren="false" />

 

转自thinker28754的专栏

分享到:
评论
2 楼 燮羽天翔 2010-05-21  
    你的第一句//1是设置的全局state,对这个viewStack当然没用。你这个代码结构有点奇怪,我没看太懂,实在不行你可以在左边的导航栏变更的时候设置回调函数手动将这个viewStack的状态设置为默认的状态。主要是现在用Flex 4, 你这种情况还没遇到过,如果不行请见谅。
1 楼 liuyunyun 2010-05-20  
viewstack的初始化问题,左边有个导航菜单,我的viewstack容器里面的自定义控件有几个states,我要实现每次单击左边的导航菜单viewstack都初始化一次...(即viewstack的state都为默认的那个。)

我当前页面一些控件已经被改变,现在切换到其他页面,又切回到这个页面时
控件没能重置回到初始化的状态



我用了四种办法都没解决,如下:
if(control.DockBox.ui.IBSNavigator.str=="建筑对象管理"){
            //1this.viewstack1.selectedChild.currentState=''; //这种方法不报错,但是没效果
            //2
            //var build1:BuildTallManages=new BuildTallManages();
        //build1.CurrentState1();//在CurrentState1方法里面定义初始化状态,但是报错说BuildTallManages未定义
        //3mxml.BuildManage.BuildTallManages.CurrentState2();//是用的类方法,但是方法里面不支持this,不能设置当前自定义控件的CurrentState
        //4mxml.BuildManage.BuildTallManages.currentState=''; //这句是我.出来的,居然报错说通过class的static引用,currentState未定义
        this.viewstack1.selectedChild=BuildTallManages;
     }
请问如何解决一下

相关推荐

Global site tag (gtag.js) - Google Analytics