加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex 中stage应用

发布时间:2020-12-15 04:37:19 所属栏目:百科 来源:网络整理
导读:Stage Null问题解决 当使用stage时,总是会报错,一直不知道错在那里,现在终于把这个问题解决了,原来stage是显示对象的属性,位于显示列表中的显示对象的stage才可以引用舞台属性stage,显示列表中的对象即为用addChild()方法添加的对象。如果对象没有在显

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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读