Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Динамический Load/UnLoad movies (http://www.flasher.ru/forum/showthread.php?t=53485)

Александр-HIMик 09.01.2004 00:24

Динамический Load/UnLoad movies
 
Ситуация такая: есть главный мув, который загружает в себя другой мувик из папки. Типа так.
movnum = random(9); // возьмем к примеру 9 мувиков с именами sound0.swf-sound8.swf
loadMovieNum("sound/sound"+movnum+".swf", 1);

Я успешно использовал такой ход для загрузки разнообразных аудио-подложек для одного из своих проектов. Теперь нужно нечно большее и вот тут то я и встрял.
В каждом загружаемом мувике есть звуковой фрагмент, который проигрывается один-два раза за весь мувик. На этом мувик исчерпан. Задача в следующем: сделать так, чтобы после "рандомной" загрузки мувика и после его воспроизведения (для каждого мувика время воспроизведения t=10 sec), он выгружался и опять же загружался рандомом следующий мувик. Картина получается такая: заходит пользователь на сайт, а там всякие шорохи, скрежет, шепот.. И желательно сделать Action для главного мувика, который бы останавливал этот процесс бесконечной загрузки. Мало ли что. %))

Штрек 09.01.2004 01:01

Ну setInterval.
Что не подходит?

Александр-HIMик 10.01.2004 16:53

Если рассмотреть подробнее:
1й кадр. Определяем рандомом номер, формируем имя файла с мувиком. Загружаем его. Если файл загружен -> кадр2.
2й кадр. Проигрываем мувик. Ставим SetInterval = t, именно столько времени положено для проигрывания. Определяем функцию, например Go1st, которая бы выгружала мувик и переходила на первый кадр. Вызываем SetInterval(t,Go1st);
Вроде так.
Теперь как бы вставить условие, чтобы можно было бы вырубить весь этот процесс?

sergwizard 10.01.2004 18:44

Вложений: 1
В главном мувике пишем такой код.
Код:

snd = ["sound0.swf","sound1.swf","sound2.swf","sound3.swf","sound4.swf","sound5.swf","sound6.swf","sound7.swf","sound8.swf"]
for(i=0;i<9;i++){
        this.createEmptyMovieClip("sound_mc"+i,i)
                loadIt();
}
function loadIt(){
        _root["sound_mc"+i].loadMovie("sound/"+snd[i]);
}
function playRand(){
        num = random(9);
        if(num!=numb){
                stopAllSounds();
                _root["sound_mc"+num].gotoAndStop(2);
                _root["sound_mc"+numb].gotoAndStop(1);
                numb=num;
        }
}
function stopMusic(){
        stopAllSounds();
        clearInterval(m);
        num=10;
}
m = setInterval(playRand, 10000);
btn.onRelease = function(){
        pressed = (pressed+1)%2;
        pressed ? stopMusic() : m = setInterval(playRand, 10000);
        pressed ? txt="play" : txt="stop";
}

Звуковые мувики делаешь по такому принципу: первый фрейм - пустой, с кодом stop();
2-фрейм с вложенным звуком и кодом stop();
Лучше смотри пример. Все звуковые мувики сделай по этому образцу.

Штрек 10.01.2004 19:05

Всё это хорошо?!
Но зачем грузить всё сразу?
Зачем 9 мувиков для подгрузки?
Если надо, чтоб пока один воспр., другой грузился,
то может и 2,3 хватит?
Смотрю в полглаза, мож чего то и не увидел?
Извиняюсь. ;)

__i 10.01.2004 19:06

таже проблема,грузим толпу swfок, они должны играть поочереди, но время их проигрывания определить невозвожно ???

sergwizard 10.01.2004 20:02

2 Штрек. Для начала, вполне бы хватило и 2-3 мувиков, ты прав. Вот только бы ты еще подсказал, каких именно? Они же РЭМДОМНО должны проигрываться. :) Это раз. А два, - у тебя сначала будут постоянно возникать паузы между звуками: - функция вызвана а мувика еще нет. Чё делать? А время идет, и через 10 секунд опять вызов функции. Хило будет. Проверено уже.
2__i Если swf(шки) не музыкальные, а нормальные, то проблем вообще никаких нет. В конце каждого мувика обнуляем переменную. В начале мувика приравниваем к true. В основном проверяем. Нет переменной, - грузим новый, есть переменная, - ждемс, когда закончится.
Ну, а если это музыкальные мувики, - подумать надо. Я так, влет не готов ответить.

sergwizard 10.01.2004 21:04

2__i
Есть такое - "Sound.onSoundComplete". Flash проверяет, закончилась ли музыка. Если да, то можно вызывать следующую функцию.
В подгружаемых музыкальных файлах пишем типа такого:
Код:

mySound = new Sound();
mySound.attachSound("name");
mySound.start();
mySound.onSoundComplete = _root.playNew;

А в главном прописываем функцию playNew();
Вот и все.

Александр-HIMик 11.01.2004 00:52

Теперь бы все это в одно свести. Я весь вечер долбился, что-то своего ничего не вышло. Если я вызываю _level1.play();, то stop(); находящийся в загруженном на _level1 мувике будет распознан и остановит play в нужном месте? А как вызвать _level1.play(); сразу же при переходе на нужный кадр?
А unloadMovie/unloadMovieNum() совсем нафиг не нужен?
И он что, будет все swf сразу грузить? А если я не поленюсь и сделаю их 50 и более. Он не лопнет? %)
Паузы между звуками, в смысле непрерывное вопроизведение всех мувов? Вообще-то паузы должны быть, желательно оговорить какое-то стандартное время t, за которое бы подгружался рандомом выбранный следующий мув. со звуком.

sergwizard 11.01.2004 01:55

Цитата:

желательно оговорить какое-то стандартное время t, за которое бы подгружался рандомом выбранный следующий мув. со звуком.
Оговорить? С кем??? Или ты думаешь, что можно заранее оговорить скорость подключения? Вообще, создается впечатление, что ты разговариваешь сам с собой, бредишь то есть. Вот это что значит?
Цитата:

Если я вызываю _level1.play();, то stop(); находящийся в загруженном на _level1 мувике будет распознан и остановит play в нужном месте? А как вызвать _level1.play(); сразу же при переходе на нужный кадр?
Цитата:

И он что, будет все swf сразу грузить? А если я не поленюсь и сделаю их 50 и более. Он не лопнет? %)
Поверь мне, - не лопнет. Flash прощает достаточно много глупостей. Вот только я сомневаюсь, что посетителю твоего сайта будет интересны эти 50 звуков. Тем более рэмдомно звучащие. 50 мувиков с 10 секундным звучанием – это порядка полутора–двух мегабайтов. И больше 8 минут звучания. Даже если твой сайт безумно оригинальный и интересный, и посетитель не сможет оторваться от него больше десяти минут, то все равно он устанет от такой какофонии и выключит звук после первой минуты. Я, честно говоря, не очень понимаю, зачем тебе и эти 9 рэмдомных мувиков.
Цитата:

Я весь вечер долбился, что-то своего ничего не вышло.
А вот это уже не бред, - очень похоже на правду.
Совет: приступая к чему-либо, сначала продумай, что ты хочешь, и как это будет выглядеть. Потом – можно ли это сделать. И только потом – КАК это сделать.
Удачи.


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

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