2010-01-29 69 views

回答

0

像这样的东西应该工作。基本上,你想听舞台的大小,然后改变图像的宽度/高度,以便至少在一个维度上匹配。

package { 

    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.geom.Rectangle; 

    public class BackgroundImage extends Sprite {   
     private var _imageHolder:Sprite = new Sprite(); 

     public function BackgroundImage() { 
      addChild(_imageHolder); 
      // load or attach image to _imageHolder. 
      // if image is loaded externally, use the event for it's completion to call startResize, otherwise use the ADDED_TO_STAGE event. 
      addEventListener(Event.ADDED_TO_STAGE, startResize, false, 0, true); 
     } 

     private function _startResize($evt:Event):void { 
      removeEventListener(Event.ADDED_TO_STAGE, startResize); 
      stage.addEventListener(Event.RESIZE, _setScale, false, 0, true); 
      setScale(null); 
     } 

     private function setScale($evt:Event):void { 
      var _stageRectangle:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); 
      if (_imageHolder.width/_stageRectangle.width > _imageHolder.height/_stageRectangle.height) { 
       _imageHolder.height = _stageRectangle.height; 
       _imageHolder.scaleX = _imageHolder.scaleY; 
      } else { 
       _imageHolder.width = _stageRectangle.width; 
       _imageHolder.scaleY = _imageHolder.scaleX; 
      } 

     } 
    } 
}