flex 中stage应用

Stage Null问题解决

当使用stage时,总是会报错,一直不知道错在那里,现在终于把这个问题解决了,原来stage是显示对象的属性,位于显示列表中的显示对象的stage才可以引用舞台属性stage,显示列表中的对象即为用addChild()方法添加的对象。如果对象没有在显示列表中,那么stage属性是null,所以总是报错。   

下面就分情况来解决这个问题:

一、在mxml中使用stage

(1)当在application标签事件中使用stage的时候,像从applicaiton 中的 preinitialize,initialize,creationComplete 事件处理函数里面 获取 stage, 这样肯定是null, 此时applicaiton实例还没有加入 stage,Application实例加入到舞台后,派发ApplicationComplete事件。所以,应该在ApplicationComplete 事件派发后获取 stage。应该写在 apllicationComplete 的分派事件中。

(2)我们可以使用下一帧函数,及延迟调用。

我们在creationComplete事件里,使用callLater(init)来调用init,init在进入下一帧的时候在使用stage..

二、使用监听函数,完整代码如下:

<?xml version="1.0" encoding="utf-8"?> 

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="appComplete();"> 

<mx:Script> 

   <![CDATA[

   import mx.controls.Alert; 

    privatefunction appComplete():void{

         if(stage)

           init();

         else

           addEventListener(Event.ADDED_TO_STAGE,init);

      }

    privatefunction init(e:Event=null):void{

        Alert.show("jin le");

        Alert.show(stage.stageWidth+"");

     }

   ]]> 

</mx:Script> 

<mx:TextInput x="567" y="149" id="t2"/> 

</mx:Application>

这里使用了一个事件,添加到舞台事件Event.ADDED_TO_STAGE ,然后在事件处理函数里面就可以使用stage。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值