Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подгруз картинок во флеш из внешнего файла (http://www.flasher.ru/forum/showthread.php?t=99030)

Сергей Герелис 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

Цитата:

Сообщение от CrazyFlasher
Сорри...опять 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.
:)


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

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