2010-11-24 137 views
2

我已經厭倦加載圖像形式的URL下面是我的示例代碼,當試圖加載大於8191像素的寬度或高度的大圖像Event.COMPLETE沒有調度,我知道的Flash Player 10 BitmapData的限制,所以我們不能加載超過這個8191像素限制的圖像?有沒有解決這個問題的方法或者你建議的其他方法?大圖像加載問題

private function loadImage(url:String):void 
          { 
           var request:URLRequest = new URLRequest(url);    
           var imageLoader:Loader = new Loader();    
           var context:LoaderContext; 
           context = new LoaderContext(); 
           context.checkPolicyFile = true; 
           imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, image_completeHandler);  
           imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 

           imageLoader.load(request,context); 
          } 

      private function image_completeHandler(event:Event):void 
      { 
        trace(" Image load Complete"); 
      } 

      private function ioErrorHandler(event:IOErrorEvent):void 
      { 
      trace("ioErrorHandler: " + event); 
     } 

回答

3

我會建議你分割圖像。如果你需要Flash來處理圖像(移動,縮放),我會寫一個持有者類,將圖像片段添加爲它自己的子元素。

我在下面添加了一些代碼和一個鏈接。查看行動中的代碼here。 (等待SWF加載)。

// TestClass的

package 
{ 
    import com.kazumakzak.display.TileImage; 

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

    public class TestBigImage extends Sprite 
    { 

     [Embed(source="assets/piece.png")] 
     private var imageClass : Class; 

     private var _image : TileImage; 
     private var _counter : Number = 0; 

     public function TestBigImage() 
     { 
      // create image with tile size 640x480 
      _image = new TileImage(640, 480); 

      // add tiles at positions 
      _image.addTile(new imageClass(), 1, 1); 
      _image.addTile(new imageClass(), 1, 2); 
      _image.addTile(new imageClass(), 2, 1); 
      _image.addTile(new imageClass(), 2, 2); 
      _image.addTile(new imageClass(), 3, 1); 
      _image.addTile(new imageClass(), 3, 2); 

      // add to display list 
      addChild(_image); 


      addEventListener(Event.ENTER_FRAME, render); 
     } 

     private function render(event : Event) : void 
     { 
      _counter += 0.05; 
      _image.x = -640 + Math.cos(_counter) * 640 
     } 
    } 
} 

//TileImage.as

package com.kazumakzak.display 
{ 
    import flash.display.Bitmap; 
    import flash.display.Sprite; 

    public class TileImage extends Sprite 
    { 

     private var _tileWidth : int; 
     private var _tileHeight : int; 

     public function TileImage(tileWidth : int, tileHeight : Number) 
     { 
      _tileWidth = tileWidth; 
      _tileHeight = tileHeight; 
     } 

     public function addTile(source : Bitmap, tileX : int, tileY : int) : void 
     { 
      source.x = (tileX-1) * _tileWidth; 
      source.y = (tileY-1) * _tileHeight; 

      addChild(source); 
     } 
    } 
} 
+0

拆分和合並是一種痛苦,但。 – boring 2010-11-24 07:40:05