2010-11-24 4 views
2

У меня была усталость загрузки изображения из URL-адреса ниже, это мой пример кода, когда я пытался загрузить большое изображение размером более 8191 пикселя по ширине или высоте, событие Event.COMPLETE не отправлено, я знаю из флеш-плеера 10 BitmapData limit, поэтому, возможно, мы загружаем изображение, превышающее этот предел в 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

Смежные вопросы