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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |