6.02.2010

[AS3] 在IE Browser 中 stageWidth 為 0 Bug

在開發的過程中,SWFObject 在 IE Browser中瀏覽時,一直 trace stageWidth 與 stageHeight 時都會為0,而 Chrome, Firefox 似乎沒有這問題。

因此找了個方法,在 IE Browser 中使用stage的resize事件處理器,似乎就可以解決掉這個問題。以下demo不管在哪個Browser中,應該都是會置中的。

DEMO


resize程式碼如下:

this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
this.addChild(cp);

       private function onAdded(e:Event):void{
            if(stage.stageWidth > 0 && stage.stageHeight > 0){
                createChild();
            }else{
                stage.addEventListener(Event.RESIZE,onResize);
            }
        }
      
        private function onResize(e:Event):void{
            if(stage.stageWidth > 0 && stage.stageHeight > 0){
                stage.removeEventListener(Event.RESIZE, onResize);
                createChild();
            }
        }
      
        private function createChild():void{
          
            cp.stop();
            cp.x = (stage.stageWidth>>1) - (cp.width>>1);
            cp.y = (stage.stageHeight>>1) - (cp.height>>1);
        }

另外也可參考這篇原文... 
...

沒有留言:

張貼留言