이미지를 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도 소스로 허용합니다.
어떻게 이미지를로드합니까? Flex 어플리케이션에 임베드되어 있습니까? 또는 URL을 통해로드 할 수 있습니까? 또는 다른 것? – JeffryHouser
코드에서 일부는 image.source = "asset path"를 사용하고 그렇지 않으면 디자이너에서 소스 버튼을 사용하고 있습니다. 이는 내가 믿는 똑같은 작업을 수행합니다. 나는 embeding을 들여다 보며 그것이 의미하는 것을 발견 할 것이다. –
필자는 embeding에 대한 더 많은 테스트를했습니다 (단지 디자이너의 체크 박스를 사용). 부하가 훨씬 빨라진 것 같습니다. 이제 중복 이미지가있는 경우 : 동일한 이미지 소스를 사용하는 이미지는 동일한 애셋을 여러 번 포함하면 메모리가 막히는가? –