PDA

Просмотр полной версии : Кеширование внешних изображений для Image и SWFLoader


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

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

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

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

ShockWave512
12.02.2011, 16:06
использую свой класс похожий на Dictionary
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
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
Ухты... платформозависимый код на AS3 :) В Виндовс нельзя файл или папку назвать "*".

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

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

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

Psycho Tiger
14.02.2011, 23:01
Почему же. loadBytes, если хранить загруженные байты или хранить BitmapData, если есть доступ к content.