zoukankan      html  css  js  c++  java
  • flex的stage

    现在我们先看看代码,下面的代码装在creationComplete事件中调用init()来启动全屏.
    1. <?xml version="1.0" encoding="utf-8"?>   
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"    
    3.     layout="absolute"  
    4.     creationComplete="init()"  
    5.     >   
    6.     <mx:Script>   
    7.         <![CDATA[   
    8.             private function init():void{   
    9.                 stage.displayState = StageDisplayState.FULL_SCREEN;    
    10.             }   
    11.         ]]>   
    12.     </mx:Script>   
    13. </mx:Application>  

    现在保存运行一下swf,却有TypeError..详细信息如下
    1. Main Thread (Suspended: TypeErrorError #1009: 无法访问空对象引用的属性或方法。)     
    2.     swf_fullscreen/init     
    3.     swf_fullscreen/___swf_fullscreen_Application1_creationComplete     
    4.     flash.events::EventDispatcher/dispatchEventFunction [no source]     
    5.     flash.events::EventDispatcher/dispatchEvent [no source]     
    6.     mx.core::UIComponent/dispatchEvent     
    7.     mx.core::UIComponent/set initialized     
    8.     mx.managers::LayoutManager/doPhasedInstantiation     
    9.     Function/http://adobe.com/AS3/2006/builtin::apply [no source]     
    10.     mx.core::UIComponent/callLaterDispatcher2     
    11.     mx.core::UIComponent/callLaterDispatcher    

    我们把init()修改一下,如果
    1. private function init():void{   
    2.     trace(stage)   
    3. }  

    运行保存运行swf,发现输入null,奇怪的事情发生了..stage竟然为null,那进行stage.displayState当然就报错了...
    再次修改程序,使用click调用init(),stage正常输出,那问题大概就是creationComplete调用时,stage初始化..

    后来网上查了一下..发现了一个叫callLater的函数,他的功能大概是..进入下一帧的时候,执行函数,我们再次修改代码:
    1. <?xml version="1.0" encoding="utf-8"?>   
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"    
    3.     layout="absolute"  
    4.     creationComplete="callLater(init)"  
    5.     >   
    6.     <mx:Script>   
    7.         <![CDATA[   
    8.             private function init():void{   
    9.                 stage.displayState = StageDisplayState.FULL_SCREEN;    
    10.             }   
    11.         ]]>   
    12.     </mx:Script>   
    13. </mx:Application>  
    我们在creationComplete事件里,使用callLater(init)来调用init,让init在进入下一侦的时候再全屏..
    保存运行swf,问题解决....

    ps:另外swf还可以使用fscommand("fullscreen", "true");来进行全屏..这里只是主要讨论stage为null的问题.
  • 相关阅读:
    个人永久性免费-Excel催化剂功能第31波-数量金额分组凑数功能,财务表哥表姐最爱
    个人永久性免费-Excel催化剂功能第30波-工作表快捷操作(批量创建、命名、排序、工作表目录)
    个人永久性免费-Excel催化剂功能第29波-追加中国特色的中文相关自定义函数
    发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!
    上传文件 获取文件名 --360浏览器
    js中的json对象和字符串之间的转化
    chosen.jquery.js
    select 后台获取text 并根据text 设置value选中项
    iframe中有ajax,设置iframe自适应高度
    charme浏览器 jquery1.9.1min.js 报脚本错误 无jquery.min.map 文件
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/1428496.html
Copyright © 2011-2022 走看看