Просмотр полной версии : загрузка картинок в слои
Приветствую
стоит задача:
есть куча картинок (*.jpg)
необходимо:
отрисовать их в кадре, расположил в таблице NxM
сжать картинки до размер WxH
т.е. у меня есть заготовка - MovieClip где в нижнем слое должна стоять такая картинка
Вопрос: как это лучше реализовать?
Вообще реально ли это сделать с картинками с диска или их все надо импортировать в клип?
Не надо ничего импортировать в клип, все реально сделать =). Читайте документацию по классу MovieClipLoader.
alekslitvinenk
05.07.2009, 23:05
я думаю, что если человеку надо загрузить картинку с диска, то MovieClipLoader - излишество :)
тогда как реализовать?
хотелось бы просто закидывать новую картинку на диск и она тут же появлялась бы в ролике без каких-либо дополнительных прописываний
тогда как реализовать?
хотелось бы просто закидывать новую картинку на диск и она тут же появлялась бы в ролике без каких-либо дополнительных прописываний
FP не умеет получать список файлов в директории. Именуйте файлы сквозной нумерацией, а во флешке сделайте условия загрузки "до тех пор, пока есть такой файл". Например, у Вас есть список файлов поименованных
image_1.jpg
image_2.jpg
image_3.jpg
Используйте MovieClipLoader. У него есть возможность узнать об ошибке загрузки.
возникли вопросы:
1) сделал простой примерчик
for (nImageID = 1; nImageID < 2; ++ nImageID)
{
this.createEmptyMovieClip("mcOther" + nImageID, this.getNextHighestDepth());
MovieClipLoader.loadClip("D:\\Sites\\works\\other\\other_" + nImageID + ".jpg", "mcOther" + nImageID);
}
выдает ошибку
The property being referenced does not have the static attribute.
в чем дело?
неужто надо так:
var pObject:MovieClipLoader;
for (nImageID = 1; nImageID < 2; ++ nImageID)
{
this.createEmptyMovieClip("mcOther" + nImageID, this.getNextHighestDepth());
pObject.loadClip("D:\\Sites\\works\\other\\other_" + nImageID + ".jpg", "mcOther" + nImageID);
}
тогда ошибка не выдается, но и изображение не выводится
Если использую просто loadMovie - изображение выводится, но возникает проблема из п3 (см ниже)
2) чтобы узнать загрузилось или нет после loadClip необходимо посмотреть что содержится в checkPolicyFile?
3) хотелось бы чтобы ролик загружался скрытым, но когда после созданияролика я выставляю ему невидимость он невидимым не становится
alekslitvinenk
06.07.2009, 23:55
вам необходимо создать экземпляр MovieClipLoadera
var pObject:MovieClipLoader = new MovieClipLoader();
для каждого загружаемого объекта нужен свой экземпляр MovieClipLoadera.
Но в вашем случае, так вы грузите все локально, я бы все-таки предпочел пользоваться обычным loadMovie, а перед тем как выполнять какие-либо операции с только что загруженным объектом - сделал бы задержку 100-200 милисекунд.
но через loadMovie я не смогу узнать загрузил я файл или не загрузил
я хочу выкладывать к себе на сайт изображения и чтобы флеш их подхватывал сразу
кстати а зачем нужна загрузка?
Добавлено через 4 минуты
хотя loadClip почему-то всегда возвращает у меня true, хотя одной картинки с названием other_3.jpg не существует - непонятно
alekslitvinenk
07.07.2009, 01:01
так вам это все для сайта нужно ?
ну да - чтобы не менять каждый раз флеш когда появляются новые изображения
хочется тобы это было автоматически - просто выложил картинки и все
на PHP это сделать в 2 строчки, но вот решил на флеше сделать сайтик целиком
для каждого загружаемого объекта нужен свой экземпляр MovieClipLoadera.
Неправда. Достаточно одного экземпляра.
Но в вашем случае, так вы грузите все локально, я бы все-таки предпочел пользоваться обычным loadMovie, а перед тем как выполнять какие-либо операции с только что загруженным объектом - сделал бы задержку 100-200 милисекунд.
Еще раз повторяю, что на MCL можно навесить хэндлер IO_Error. loadMovie прошлый век.
Но в вашем случае, так вы грузите все локально, я бы все-таки предпочел пользоваться обычным loadMovie, а перед тем как выполнять какие-либо операции с только что загруженным объектом - сделал бы задержку 100-200 милисекунд.Помогаем плодить быдлокодеров?
я тут накидал немного кода.
var container: MovieClip = this.createEmptyMovieClip('container', this.getNextHighestDepth());
var pattern: String = 'http://somedomain.ru/images/image_{d}.jpg';
var mcl:MovieClipLoader = new MovieClipLoader();
this.mcl.addListener(this);
var imageCounter:Number = 0;
//-----------------------------------------------------------------------------
//
// Private methods
//
//-----------------------------------------------------------------------------
function loadNext():Void {
this.mcl.loadClip( this.substitute(pattern, String(++this.imageCounter)), this.container);
}
function substitute():String {
var temp: Array = arguments[0].split("{d}");
var i: Number = temp.length;
if (i-- > 1) while (i--) temp[i] += arguments[i + 1];
return temp.join('');
}
//-----------------------------------------------------------------------------
//
// Events handlers: MovieClipLoader
//
//-----------------------------------------------------------------------------
function onLoadInit(target:MovieClip):Void {
// Do something and go on next image
this.loadNext();
}
function onLoadError(target_mc:MovieClip, errorCode:String, httpStatus:Number):Void {
// Check httpStatus
switch (httpStatus) {
case 404: // Not found. Loading job done! Clean up unnecessary.
this.mcl.removeListener(this);
delete this.mcl;
// Do other job
break;
default: // Try once more
this.imageCounter--;
this.loadNext();
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~
//
// Entry Point
//
//~~~~~~~~~~~~~~~~~~~~~~~~
this.loadNext();
Работоспособность не проверял. В статусы нужно добавить что-то еще. Разные они бывают.
alekslitvinenk
07.07.2009, 15:46
Неправда. Достаточно одного экземпляра.
Согласен, оговорился. Просто раньше помню обсуждался баг MovieClipLoader-а когда он некорректно работал при одновременной загрузке через него более 10-ти объектов.
Помогаем плодить быдлокодеров?
Никого я с пути истинного сбивать не пытался, а подсказал самый лекгий и понятный для новичков вариант.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.