2011-02-18 33 views

回答

1

,你可以這樣做,但你需要把你的內容在一個容器(變量「_container」下面):

package 
{ 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.geom.Point; 
    import flash.geom.Rectangle; 

    public class Test extends Sprite 
    { 
     private var _initialeStageBounds : Point = new Point; 
     private var _container : Sprite = new Sprite; 

     public function Test() 
     { 
      _container.graphics.beginFill(0x556699); 
      _container.graphics.drawRect(0,0,100,100); 
      addChild(_container); 

      _initialeStageBounds.x = stage.stageWidth; 
      _initialeStageBounds.y = stage.stageHeight; 

      stage.scaleMode = StageScaleMode.NO_SCALE; 
      stage.align = StageAlign.TOP_LEFT; 
      stage.addEventListener(Event.RESIZE, onStageResize); 
     } 

     private function onStageResize(e:Event) : void 
     { 
      var ratio : Number = Math.min(1, 
              stage.stageWidth/_initialeStageBounds.x, 
              stage.stageHeight/_initialeStageBounds.y); 
      _container.x = (stage.stageWidth - _container.width)/2; 
      _container.y = (stage.stageHeight - _container.height)/2; 
      _container.scaleX = ratio; 
      _container.scaleY = ratio; 
     } 
    } 
} 
+0

嗯,你_放棄容器並寫一些令人費解的事情來調整大小並在顯示列表上重新定位項目,但這種解決方案可能更容易。 ;-) – coltraneofmars

+0

你是對的,但通過直接操縱顯示列表,顯示對象移動,你可能會有機會添加副作用。 –

+0

客戶端不想正確調整事物大小,但使用此方法。所以我們必須順其自然。 :-) – vuzum

相關問題