Просмотр полной версии : Кеширование внешних изображений для Image и SWFLoader
Проблема старая и хорошо известная, но красивого решения я так нигде и не нашел.
Как кешировать загруженные внешние изображения в Image(SWFLoader)?
Даже при повторной загрузке одного и того же изображения картинка на доли секунды пропадает - кеш браузера слишком медленно возвращает изображение.
В случае скорллинга List-а, содержащего Image, это особенно заметно.
Как с этим бороться?
Битмапдату небольших изображений храню в 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.
спасибо, почитаю
ShockWave512, для коллекций наиболее удачно наследоваться от Proxy.
2Psycho Tiger. Круто, спасибо за ликбез.
Ухты... платформозависимый код на AS3 :) В Виндовс нельзя файл или папку назвать "*".
Ухты... платформозависимый код на AS3 :) В Виндовс нельзя файл или папку назвать "*".
А в макоси можно :p
Никс тоже нормально относится к mkdir \* но такие имена как правило получаются когда кто-то копировал все файлы из папки и перепутал "куда" и "откуда" :)
Спасибо всем за ответы.
Похоже что кроме собственных хаков нормального решения данной проблемы не существует =\
Psycho Tiger
14.02.2011, 23:01
Почему же. loadBytes, если хранить загруженные байты или хранить BitmapData, если есть доступ к content.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.