Форум 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=86380)

Kristik 13.10.2006 16:54

Создание слайдшоу
 
Добрый день!

Подскажите, пожалуйста, как мне создать во флэше слайдшоу?

Есть 3 swf файла, которые нужно поочередно воспроизводить. Первый проигрался, тут же начинается воспроизведение следующего.
Как проще всего это реализовать?

Во флеше не особо разбираюсь :(

Заранее благодарю за ответы!

Kristik 13.10.2006 16:57

Нашел в форуме следующий код


Код:

Есть "главный" файл, в котором 3 фрейма, каждый фрейм подгружает свой swf файл.

var container:MovieClip = _root.createEmptyMovieClip("container", 1);
// Создаём контейнер для подгрузки
var mcLoader:MovieClipLoader = new MovieClipLoader();
// Создаём функцию для отслежки загрузки
mcLoader.addListener(this);
mcLoader.loadClip("1.swf", container);


Но у меня не получается заставить это работать:(
Т.е. я создал новый файл. В нем сделал 3 фрейма. В каждом из этих фреймов написал код, указанный выше. Не работает :(

ПОМОГИТЕ!!
Вопрос достаточно срочный :(

Хемуль 13.10.2006 17:14

2 Kristik:
Тут похожая задача:
http://flasher.ru/forum/showthread.php?t=86343

wvxvw 13.10.2006 18:09

А зачем this в листенеры добавлять? Просто интересно, я уже не первый раз вижу этот код, очевидно, он из какого-то очень популярного источника, интересно все таки, что ж там дальше-то было? =)

Хемуль 13.10.2006 18:25

2 wvxvw:
А что дальше? Слушали, что скажет _root, наверное.... ^_^ Или куда там этот код вставлялся...

2 Kristik:
А вы не помните, где нашли этот код? А то я не такой наблюдательный, как wvxvw, но теперь тоже стало интересно...

Kristik 13.10.2006 18:29

2 Хемуль:

Нашел в этом форуме! Честно говоря, ссылка не сохранилась :(

Ребята, помогите реализовать идею со слайдшоу!!
Пожалуйста!!

Буду жутко признателен за исходник.. но это в идеале, я сам понимаю.. люди все занятые и дергать их понапрасну мне не стоило!

Пожалуйста!

Хемуль 13.10.2006 18:35

2 Kristik:
Вечером, может, постараюсь вам написать... Думаю, и до меня напишут.

Kristik 13.10.2006 18:47

2 Хемуль:

Спасибо!! Буду очень ждать!!

Хемуль 14.10.2006 11:32

Вложений: 1
Код:

var movieBaseName:String = "resources/movie";
var movieExtension:String = "swf";
var currentMovie:Number = 0;
var moviesNumber:Number = 4;
var movieContainerClipBaseName:String = "movie";
var left:Number = 100;
var top:Number = 100;
var loading:Boolean = false;
var firstMovie:Boolean = true;

var clipsLoader:MovieClipLoader = new MovieClipLoader();
var clipsLoaderListener:Object = new Object();

clipsLoaderListener.onLoadStart = function(targetClip:MovieClip)
{
        loading = true;
}

clipsLoaderListener.onLoadComplete = function(targetClip:MovieClip)
{
        loading = false;
        var previousMovie:Number = (currentMovie == 1 ? moviesNumber : currentMovie - 1);
        var previousMovieClipName:String = movieContainerClipBaseName + previousMovie;
        if (targetClip._parent[previousMovieClipName] != undefined)
        {
                targetClip.gotoAndStop(1);
        }
        if (firstMovie)
        {
                firstMovie = false;
                loadNextMovie();
        }
        targetClip.onEnterFrame = function()
        {
                if (this._currentframe == this._totalframes)
                {
                        if (loading)
                        {
                                this.gotoAndStop(this._totalframes);
                        }
                        else
                        {
                                var currentMovieClipName:String = movieContainerClipBaseName + (currentMovie);
                                var currentMovieClip:MovieClip = this._parent[currentMovieClipName];
                                currentMovieClip.play();
                                this.removeMovieClip();
                                loadNextMovie();
                        }
                }
        };
}

function loadNewMovie(movieNumber:Number)
{
        var movieName:String = movieBaseName + movieNumber + "." + movieExtension;
        var movieContainerClipName:String = movieContainerClipBaseName + movieNumber;
        var containerClip:MovieClip = this.createEmptyMovieClip(movieContainerClipName, this.getNextHighestDepth());
        var previousMovie:Number = (movieNumber == 1 ? moviesNumber : movieNumber - 1);
        var previousMovieClipName:String = movieContainerClipBaseName + previousMovie;
        this[previousMovieClipName].swapDepths(containerClip);
        containerClip._x = left;
        containerClip._y = top;
        clipsLoader.loadClip(movieName, containerClip);
}

function loadNextMovie()
{
        currentMovie++;
        if (currentMovie > moviesNumber)
        {
                currentMovie = 1;
        }
        loadNewMovie(currentMovie);       
}

clipsLoader.addListener(clipsLoaderListener);
loadNextMovie();

Картинки загружаются в мувиклипы, расположенные один под другим. Пока один проигрывается, второй под ним загружает в себя флешку. Если картинка нижняя загрузится раньше, чем проиграется верхняя, то она ждёт, пока верхняя проиграется и удалится. Если нижняя картинка загрузится позже, чем закончит проигрываться верхняя, то верхняя проигрывается до конца, ждёт загрузки нижней, а потом удаляется, после чего проигрывается нижняя. Может где-то ошибся. Тестировать с разными размерами лень. Будут вопросы или проблемы, пишите.
Исходник прикрепляю...

wvxvw 14.10.2006 13:48

Альтернативный вариант =)
Код:

var _l1:MovieClipLoader = new MovieClipLoader();
var _l2:Object = {};
var _l3:Array = ["slide1.swf", "slide2.swf", "slide3.swf"];
var _l4:MovieClip = _root.createEmptyMovieClip("container", 0);
var _l5:Number = 0;
var _l6:Array = [];
for (i=0; i<_l3.length; i++) {
        var _l7:MovieClip = _l4.createEmptyMovieClip("container"+i, _l4.getNextHighestDepth());
        _l6.push(_l7);
        _l1.loadClip("directory/"+_root._l3[i], _l7);
        _l7._x = Stage.width;
        _l7._y = Stage.height;
}
_l1.addListener(_l2);
_l2.onLoadComplete = function(mc) {
        if (mc == _l6[0]) {
                mc._x = 0;
                mc._y = 0;
                _l5++;
                _root.switcher(_l5);
        }
};
function switcher() {
        _root.onEnterFrame = function() {
                if (_root._l6[_root._l5-1]._currentframe == _root._l6[_root._l5-1]._totalframes && _root._l6[_root._l5].getBytesTotal() == _root._l6[_root._l5].getBytesLoaded()) {
                        _root._l6[_root._l5-1].stop();
                        _root._l6[_root._l5-1]._x = Stage.width;
                        _root._l6[_root._l5-1]._y = Stage.height;
                        _root._l6[_root._l5]._x = 0;
                        _root._l6[_root._l5]._y = 0;
                        _root._l5++;
                }
        };
}

Вложение 15470


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

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