Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Кеширование внешних изображений для Image и SWFLoader (http://www.flasher.ru/forum/showthread.php?t=150458)

Shalom 12.02.2011 02:05

Кеширование внешних изображений для Image и SWFLoader
 
Проблема старая и хорошо известная, но красивого решения я так нигде и не нашел.
Как кешировать загруженные внешние изображения в Image(SWFLoader)?

Даже при повторной загрузке одного и того же изображения картинка на доли секунды пропадает - кеш браузера слишком медленно возвращает изображение.
В случае скорллинга List-а, содержащего Image, это особенно заметно.

Как с этим бороться?

GBee 12.02.2011 10:10

Битмапдату небольших изображений храню в dictionary по УРЛу, может поможет.

ShockWave512 12.02.2011 16:06

использую свой класс похожий на Dictionary
Код AS3:

package *
{
        import *.KeyValuePair;
 
        import mx.controls.Alert;
 
        public class Dictionary extends Object
        {
                //[ArrayElementType("KeyValuePair")]
                private var pairs:Array = [];
 
 
                public function Dictionary()
                {
                        super();
                }
 
                public function isExist(key:String):Boolean
                {
                        for each (var item:KeyValuePair in pairs)
                        {
                                if ( item.key == key )
                                {
                                        return true;
                                }
                        }
 
                        return false;
                }
                /**
                * Return null if both arguments null.
                * Return KeyValuePair object if this success added in array,
                * or key exists in storage.
                */

                public function addItem(name:String, value:Object):KeyValuePair
                {
                        // Check for non null values.
                        if ( name == null || value == null ) return null;
                        // Check for existing pair with given key.
                        for each (var item:KeyValuePair in pairs)
                        {
                                if ( item.key == name )
                                {
                                        return item;
                                }
                        }
 
                        var pair:KeyValuePair = new KeyValuePair();
 
                        pair.key = name;
                        pair.value = value;
 
                        pairs.push( pair );
 
                        return pair;
                }
 
                public function getValue(key:String):Object
                {
                        for each (var item:KeyValuePair in pairs)
                        {
                                if ( item.key == key )
                                {
                                        return item.value;
                                }
                        }
                        Alert.show("Dictionary.getValue(): KEY IN DICTIONARY DO NOT EXISTS !!!");
                        return null;
                }
 
                public function reset():void
                {
                        pairs = new Array();
                }
 
        }
}
 
 
package *
{
        public class KeyValuePair
        {
                public var key:String = "";
                public var value:Object = {};
 
                public function KeyValuePair()
                {
 
                }
        }
}


Psycho Tiger 12.02.2011 17:27

ShockWave512, для коллекций наиболее удачно наследоваться от Proxy.

ShockWave512 12.02.2011 17:31

Цитата:

Сообщение от Psycho Tiger (Сообщение 972837)
ShockWave512, для коллекций наиболее удачно наследоваться от Proxy.

спасибо, почитаю

GBee 12.02.2011 19:18

Цитата:

ShockWave512, для коллекций наиболее удачно наследоваться от Proxy.
2Psycho Tiger. Круто, спасибо за ликбез.

wvxvw 12.02.2011 23:19

Ухты... платформозависимый код на AS3 :) В Виндовс нельзя файл или папку назвать "*".

etc 13.02.2011 00:17

Цитата:

Сообщение от wvxvw (Сообщение 972897)
Ухты... платформозависимый код на AS3 :) В Виндовс нельзя файл или папку назвать "*".

А в макоси можно :p

wvxvw 13.02.2011 03:25

Никс тоже нормально относится к mkdir \* но такие имена как правило получаются когда кто-то копировал все файлы из папки и перепутал "куда" и "откуда" :)

Shalom 14.02.2011 21:21

Спасибо всем за ответы.
Похоже что кроме собственных хаков нормального решения данной проблемы не существует =\


Часовой пояс GMT +4, время: 01:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.