2011-12-12 4 views
1

Flex 4.6 및 AIR로 앱을 제작하고 있습니다. Android 및 iPhone에 게시 될 예정이지만 현재 Android 기기에서 테스트 중입니다.Flex Mobile, 화면 전환시 느린 이미지 로딩

다른 화면과 플래시 구성 요소로 작업하는 기본 흐름이 있습니다.

그러나 화면간에 전환 할 때 실제 장치에 배포 된 경우에도 모든 s : Image 개체는로드하는 데 시간이 오래 걸립니다. 오랫동안 나는 단지 0.5 초 정도를 의미합니다. 이것은 일반적으로 그리 좋지는 않지만 화면의 텍스트는 즉시 나타나고 모든 이미지는 0.5 초 동안 흰색으로 유지 된 다음로드됩니다.

이것은 단순한 AIR/Flex 것입니까? 다른 사람이이 문제를 해결해 주 었습니까?

+0

어떻게 이미지를로드합니까? Flex 어플리케이션에 임베드되어 있습니까? 또는 URL을 통해로드 할 수 있습니까? 또는 다른 것? – JeffryHouser

+0

코드에서 일부는 image.source = "asset path"를 사용하고 그렇지 않으면 디자이너에서 소스 버튼을 사용하고 있습니다. 이는 내가 믿는 똑같은 작업을 수행합니다. 나는 embeding을 들여다 보며 그것이 의미하는 것을 발견 할 것이다. –

+0

필자는 embeding에 대한 더 많은 테스트를했습니다 (단지 디자이너의 체크 박스를 사용). 부하가 훨씬 빨라진 것 같습니다. 이제 중복 이미지가있는 경우 : 동일한 이미지 소스를 사용하는 이미지는 동일한 애셋을 여러 번 포함하면 메모리가 막히는가? –

답변

1

이미지를 Flex 응용 프로그램에 포함하면 이미지가 더 빨리로드되는 경향이 있습니다. More info on that here. 이 뒤에 코드는 다음과 같을 것이다 : 동일한 이미지를 사용해야하는 경우

<s:Image id="myImageRaw" source="{imgCls}"/> 

가 [코드는 문서에서 복사]

:

[Embed(source="logo.gif")] 
[Bindable] 
public var imgCls:Class; 

그런 다음이 같은 클래스를 사용할 수 있습니다 여러 번, 당신은 BitMapImage 클래스를 사용하여 조사해야한다; 그리고 첫 번째 이미지의 bitMapData를 복제합니다. 다음은 스프라이트에서 BitMapData를 가져 오는 빠른 유틸리티 클래스 I "Borrowed and modified"이며 그 반대의 경우도 마찬가지입니다. [플렉스 이미지 클래스 클래스는 스프라이트를 확장, 그래서 당신은 입력으로의 이미지를 보낼 수 있어야한다]

package com.natejc.utils.display 
{ 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.DisplayObject; 
    import flash.display.Sprite; 


    // ********************************************************************************** 
    // ********************************************************************************** 
    // borrowed from http://www.natejc.com/source/com/natejc/utils/display/DisplayConverter.as 

    /** 
    * Provides convenience conversion methods for Sprites and Bitmaps. 
    * 
    * Open source. Free to use. Licensed under the MIT License. 
    * 
    * @author Nate Chatellier 
    * @see  http://blog.natejc.com 
    */ 
    public class DisplayConverter 
    { 


     // ********************************************************************************** 


     /** 
     * Constructs the DisplayConverter object. 
     */ 
     public function DisplayConverter() 
     { 
      trace("DisplayConverter is a static class and should not be instantiated"); 

     } // END CONSTRUCTOR 



     // ********************************************************************************** 


     /** 
     * Converts a Bitmap to a Sprite. 
     * 
     * @param bitmap  The Bitmap that should be converted. 
     * @param smoothing Whether or not the bitmap is smoothed when scaled. 
     * @return    The converted Sprite object. 
     * 
     * @see     http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Bitmap.html#smoothing 
     */ 
     public static function bitmapToSprite(bitmap:Bitmap, smoothing:Boolean = false):Sprite 
     { 
      var sprite:Sprite = new Sprite(); 
      sprite.addChild(new Bitmap(bitmap.bitmapData.clone(), "auto", smoothing)); 
      return sprite; 

     } // END FUNCTION bitmapToSprite 


     // ********************************************************************************** 


     /** 
     * Converts a Sprite to a Bitmap. 
     * 
     * @param sprite  The Sprite that should be converted. 
     * @param smoothing Whether or not the bitmap is smoothed when scaled. 
     * @return    The converted Bitmap object. 
     * 
     * @see     http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html#draw() 
     */ 
     public static function spriteToBitmap(sprite:Sprite, smoothing:Boolean = false):Bitmap 
     { 
      var bitmapData:BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x00FFFFFF); 
      bitmapData.draw(sprite); 

      return new Bitmap(bitmapData, "auto", smoothing); 

     } // END FUNCTION spriteToBitmap 



     /** 
     * JH DotComIT added 11/19/2011 
     * Converts a Sprite to a BitmapData. 
     * 
     * @param sprite  The Sprite that should be converted. 
     * @return    The converted Bitmap object. 
     * 
     * @see     http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html#draw() 
     */ 
     public static function spriteToBitmapData(sprite:Sprite):BitmapData 
     { 
      var bitmapData:BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x00FFFFFF); 
      bitmapData.draw(sprite); 

      return bitmapData; 

     } // END FUNCTION spriteToBitmapData 

     /** 
     * Converts BitmapData to a Sprite. 
     * 
     * @param bitmap  The Bitmap that should be converted. 
     * @param smoothing Whether or not the bitmap is smoothed when scaled. 
     * @return    The converted Sprite object. 
     * 
     * @see     http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Bitmap.html#smoothing 
     */ 
     public static function bitmapDataToSprite(bitmapData:BitmapData, smoothing:Boolean = false):Sprite 
     { 
      var sprite:Sprite = new Sprite(); 
      sprite.addChild(new Bitmap(bitmapData.clone(), "auto", smoothing)); 
      return sprite; 

     } // END FUNCTION bitmapToSprite 


     // ********************************************************************************** 
     // ********************************************************************************** 


    } // END CLASS DisplayConverter 
} // END PACKAGE 

당신의 BitmapData이 있으면 당신이 그것의 사본을 얻을의 여러 인스턴스를 만들 수 clone를 호출 할 수 있습니다 같은 이미지. [blitting에 대한 연구를 수행하십시오. 게임 개발자가 사용하는 기술]. Spark Image 태그는 BitMapData도 소스로 허용합니다.