PDA

Просмотр полной версии : Подгруз картинок во флеш из внешнего файла


Сергей Герелис
26.07.2007, 18:48
Приветствую.
Проблема в том, что нужно чтобы во флеше было место с кучей картинок, которые должны будут подгружаться из внешнего файла. Как это сделать? А вторая проблема в том, чтобы потом человек сам мог добавлять картинки в этот внешний файл и соответственно они будут потом подгружаться в самом флеш сайте.

Кто знает, помогите!.

CrazyFlasher
26.07.2007, 18:56
MovieClipLoader

†‡Paladin‡†
26.07.2007, 19:01
http://demiart.ru/forum/index.php?showtopic=19720 Гляньте тут.

CrazyFlasher
26.07.2007, 19:02
2 †‡Paladin‡†: помоему в данном случае использовать XML просто лишняя головная боль

etc
26.07.2007, 19:08
2 †‡Paladin‡†: помоему в данном случае использовать XML просто лишняя головная боль
Интересно услышать от вас лекцию насчет MovieClipLoader и о том, где вы будете хранить ссылки на картинки.

CrazyFlasher
26.07.2007, 19:17
к примеру есть папка img и в ней куча картинок: img1.jpg, img2.jpg, img3.jpg...с помощью цикла загружаем их. Так же делаем проверку, что если такого файла не существует (к примеру img1000.jpg), значит цикл надо заканчивать...ну это грубо говоря =)
Вот так =)

если хочется посмотреть как эот будет работать, то могу сделать и выслать =)

etc
26.07.2007, 19:18
Нет, спасибо. В целом это способ плохой и неудобен.

Ведьмак
26.07.2007, 19:22
знаю вашу нелюбовь к XML.. :) я думаю его не посто так придумали...

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

CrazyFlasher
26.07.2007, 19:23
Нет, спасибо. В целом это способ плохой и неудобен.


ну а мне кажется, что в данном случае это самый простой способ...разве нет?

†‡Paladin‡†
26.07.2007, 19:31
2 †‡Paladin‡†: помоему в данном случае использовать XML просто лишняя головная боль
Для вас головная боль, а для меня в порядке вещей. В любом случае автору решать.

CrazyFlasher
26.07.2007, 19:33
минус в том, что нужно вбивать в XML каждую картинку и если будут добавляться новые опять редактировать...зачем в данном случае нагружать себя этим? Объясните, чем ваш способ лучше? =) Может я что-то не учёл? =)

Ведьмак
26.07.2007, 19:37
переход на панель администрации для добавления фотографий... или сделать, чтобы она кидала их в папку Img со сквозной нумерацией? :)

CrazyFlasher
26.07.2007, 19:40
переход на панель администрации для добавления фотографий... или сделать, чтобы она кидала их в папку Img со сквозной нумерацией?

в том то и дело что автору это не требуется, т.к. в вопросе этого не звучало =)

†‡Paladin‡†
26.07.2007, 19:42
Проблема в том, что нужно чтобы во флеше было место с кучей картинок, которые должны будут подгружаться из внешнего файла.

CrazyFlasher
26.07.2007, 19:45
Проблема в том, что нужно чтобы во флеше было место с кучей картинок, которые должны будут подгружаться из внешнего файла


ну тогда встречный вопрос: Каким образом картинки могут храниться в файле?? =) Из архива флэш считывать файлы не умеет. Вопрос задан некорректно. Если имеются ввиду ссылки на картинки, то да, XML или текстовый файл.

†‡Paladin‡†
26.07.2007, 19:50
Ну вот автору так и скажи. Ко мне какие претензии?
З.Ы. AS3 умеет.

CrazyFlasher
26.07.2007, 19:51
Ну вот автору так и скажи. Ко мне какие претензии?


Помоему как раз таки на меня все набросились =)
Ладно, не будем разодить в теме балаган (хотя уже развели =))

P.S. уверен на 100% что автор не планировал грузить файлы из архива ;-) И данный вопрос находится в разделе АС1/2

Сергей Герелис
27.07.2007, 10:39
Да в том то и дело, что помимо того что картинки должны подгружаться, так еще и потом человек в этом ничего не понимающий должен сам добавлять картинки из вне.

Сергей Герелис
27.07.2007, 11:06
в том то и дело что автору это не требуется, т.к. в вопросе этого не звучало =)
Здравствуйте. Мне вот как раз и нужно чтобы девушка могла потом во флэше добавлять свои фотки новые или удалять старые. Хотя бы таким способом, заменой картинок в папке из вне.

Кстати я 16 лет в Таллине прожил))))

CrazyFlasher
27.07.2007, 11:10
ок...когда будет сегодня свободное время сделаю...потом обновлю этот пост.
Кстати каким образом должны раполагаться загруженные картинки в мувике?

Оффтоп: А чего уехал из Таллинна? =) Хотя правильно...это загнивающая страна c дебилами у власти

Сергей Герелис
27.07.2007, 11:29
Картинки должны следовать одна за другой. Я думаю что не принципиально, будут ли они двигаться как сделано по ссылке что я вам Давал или будут стоять на месте. Скрипт как мне кажется будет один и тот же, просто в клипе задать, чтобы полоса прокрутки перемещалась вправо или влево.

---------------
уехал в 17 лет. когда началась вся бадяга с тем, кто оккупант а кто нет. Сейчас уже думаю все, что не делается все к лучшему.

CrazyFlasher
27.07.2007, 15:39
import mx.utils.Delegate;

class MultiImgLoader {

private var imgLoader:MovieClipLoader;
private var imgList:Object;
private var imgNumber:Number = 1;
private var imgPath:String = "";
private var imgPrefix:String = "";
private var target:MovieClip;
private var firstX:Number;
private var valueX:Number = -200;
private var valueY:Number = 0;
private var imgWidth:Number = 200;
private var imgHeight:Number = 200;
private var tempMc:MovieClip;

public function MultiImgLoader(){
firstX = valueX;

imgLoader = new MovieClipLoader();
imgList = new Object();
imgLoader.addListener(imgList);

target = _root;
}

public function loadJPGImages(path:String, prefix:String):Void{
if(imgPath == ""){imgPath = path; imgPrefix = prefix;}

imgList.onLoadError = Delegate.create(this, function(){finish(tempMc)});
imgList.onLoadComplete = Delegate.create(this, continueLoad);

imgLoader.loadClip(imgPath + imgPrefix + imgNumber + ".jpg", imgPlace());
}

private function continueLoad():Void{
trace(imgNumber + " pic(s) loaded")
imgNumber++;
loadJPGImages();
}

private function finish(mc:MovieClip):Void{
if(mc.getBytesTotal() <= 0){
trace("All images loaded!");
}else{
trace("Error loading image!")
}
}

//вот эта функция располагает файлы....в дальнейшем можно будет вывести отдельным
классом с разными методами разположения картинок. А пока так:

private function imgPlace():MovieClip{
var mc:MovieClip;
var mc2:MovieClip;
mc = target.createEmptyMovieClip("imgPlace" + imgNumber, target.getNextHighestDepth());
//mc2 = target.attachMovie("border1", "border1", target.getNextHighestDepth());

trace("valueX + imgWidth " + (valueX + imgWidth))
if(valueX + imgWidth > Stage.width){
valueX = firstX + imgWidth;
valueY += imgHeight;
}else{
valueX += imgWidth;
}

mc._x = valueX;
mc._y = valueY;

//mc2._x = mc._x
//mc2._y = mc._y


trace(mc._x);
trace(mc._y);
trace("--------");

tempMc = mc;
return mc;
}
}

код во fla

var picLoader:MultiImgLoader = new MultiImgLoader();
picLoader.loadJPGImages("images/", "img");

Сергей Герелис
27.07.2007, 17:21
В первый раз сталкиваюсь с файлами с расширением "as")) Где должен лежать этот файл? в папке с картинками или отдельно, рядом с флешкой. И во фрейме, вы имели ввиду в клипе? И как я понял, картинки будут обзываться img1.jpg, img2.jpg и так далее.

Сергей Герелис
27.07.2007, 17:26
Тот код который прописывается в флешке, он прописывается для все клипа как я понимаю а не для отдельного кадра или объекта.?

etc
27.07.2007, 17:28
В первый раз сталкиваюсь с файлами с расширением "as")) Где должен лежать этот файл? в папке с картинками или отдельно, рядом с флешкой. И во фрейме, вы имели ввиду в клипе? И как я понял, картинки будут обзываться img1.jpg, img2.jpg и так далее.
as-файл компилируется и «запихивается» в swf.

CrazyFlasher
27.07.2007, 17:42
создаёте файл MultiImgLoader.as к примеру в той же папки где и fla файл. Во fla файле в главной временой шкале в 1 фрейме пишете 2-ой код.

не обязательно img.
Префикс можно менять: picLoader.loadJPGImages("images/", "img"); - второй переметр это часть имени картинки...сегодня может улучшу код =) сделаю побольше фич =)
-----
Внёс некие изменения в код.
Это чтобы проверялось на самом ли деле все файлы загружены или у нас оборвалось соединение.

Кстати, есть идея как загружать без использования XML или текстового файла все картинки из папки, не зная их имён? =) я думаю, что скорее всего Security нам это не позволит =) но может есть выход? =)

etc
27.07.2007, 18:05
Сорри...опять 2 поста подряд сделал =(
Ну? А отредактировать и удалить второй пост мне за вас нужно? Я могу, в общем в обмен на плюс только.

Olegg
28.02.2008, 20:05
CrazyFlasher,хороший класс.Только вот позволю себе заметить,_root в классах писать не рекомендуется.

CrazyFlasher
29.02.2008, 01:06
писал его относительно давно...так а что мешает переделать? :) передавать таргет:

var picLoader:MultiImgLoader = new MultiImgLoader(this);

Olegg
29.02.2008, 12:50
ну воть. :)
А в конструкторе я б cделал так:
public function MultiImgLoader(prmStage){
firstX = valueX;
imgLoader = new MovieClipLoader();
imgList = new Object();
imgLoader.addListener(imgList);

this._stage = prmStage;
}

И получаетсо,что this._stage - _root.
:)

iNils
29.02.2008, 12:59
А зачем городить огород из
imgList = new Object();
imgLoader.addListener(imgList);
а потом писать это
imgList.onLoadError = Delegate.create(this, function(){finish(tempMc)});
imgList.onLoadComplete = Delegate.create(this, continueLoad);
когда достаточно было сделать
imgLoader.addListener(this);и у вас onLoadComplete и onLoadError уже являются событиями экземпляра класса?