Flex Mobile, медленная загрузка изображений при переключении экранов - PullRequest
1 голос
/ 12 декабря 2011

Я создаю приложение с Flex 4.6 и AIR.Он будет опубликован на Android и iPhone, но сейчас я тестирую на устройстве Android.

У меня есть базовый процесс работы с различными экранами и даже с флэш-компонентом.

Однакопри переключении между экранами все мои объекты s: Image загружаются очень долго, даже если они развернуты на реальном устройстве.Под долгим временем я имею в виду только полсекунды.Обычно это не так уж плохо, но текст на экране появляется сразу, в то время как все изображения остаются белыми в течение полсекунды, а затем загружаются.

Это просто AIR / Flex?Кто-нибудь еще сталкивался с этим, надеюсь, с решением?

1 Ответ

1 голос
/ 12 декабря 2011

Изображения загружаются быстрее, если вы встраиваете их в приложение Flex. Подробнее об этом здесь .Код этого будет выглядеть следующим образом:

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

Тогда вы можете использовать этот класс следующим образом:

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

[код скопирован из документов]

Если вывам нужно использовать одно и то же изображение несколько раз, вам следует изучить класс BitMapImage ;и клонирование bitMapData первого изображения.Вот класс быстрой утилиты I " Заимствовано и изменено " для получения BitMapData из спрайта, и наоборот.[Класс Flex Image расширяет спрайт, поэтому вы должны иметь возможность отправлять изображение в качестве входных данных]

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 , чтобы получитьскопируйте его и создайте несколько экземпляров одного и того же изображения.[Проведите какое-нибудь исследование блиттинга;техника, используемая разработчиками игр.Тег Spark Image также будет принимать BitMapData в качестве источника.

...