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

alex001 23.07.2009 20:19

загрузка мувика, прелоэдер и переменные
 
есть игра. весит прилично.
поэтому отдельно сделал меню отдельно видео ролики отдельно каждый уровень.
все файлы находяться в формате swf, в одной папке.
вот вообщем что мне необходимо:

команда которая будет загружать, по имени следующий свф, а снизу цифорками написаны проценты сколько загрузилось. вообщем прелоэдер.
и еще надо чтобы все переменные которые были в этом клипе сохранялись, а точнее
их можно было использовать в загруженном мувике, с теми значениями которые были даны в предыдущем. :confused:

mooncar 23.07.2009 20:58

Используйте MovieClipLoader, напишите функцию nextLoad, где вызываете loadClip, а в методе onLoadInit - обращение опять к этой функции nextLoad.
Экземпляр MovieClipLoader и слушатель можно один и тот же использовать.
Переменные для аккуратности забивайте в массив какой-нибудь в теле того же onLoadInit.

alex001 23.07.2009 21:00

а что за onInit? можно по подробнее, что это?

mooncar 23.07.2009 21:06

Если известно количество загружаемых swf-ок, то рекурсию прерываете по достижению счетчиком этого числа, если число неизвестно - прерываете рекурсию по срабатыванию onLoadError

Добавлено через 1 минуту
onLoadInit - я ошибся сперва - это метод класса MovieClipLoader, который вызывается при полной готовности загруженного клипа.

alex001 23.07.2009 21:10

мне нужно не совсем то,
в канце каждого мувика должна стоять команда типо load(lvl2.swf)
в следуещем load(lvl3.swf).
я вполне смогу в конце каждого клипа написать код заного.
еще нужен, как я говорил, прелоэдер.
P.S.а как MovieClipLoader работает?

mooncar 23.07.2009 21:16

Тогда так: в методе onLoadInit при загрузке очередного ролика узнаете url следующего ролика, и передаете его этой функции.
Такой вот кусок:
Код AS1/AS2:

listener.onLoadInit= function (target_mc:MovieClip) {
DATARRAY[0] = target_mc.var1; //навсегда забирем данные в основной ролик
....
DATARRAY[N] = target_mc.varN;
 nextLoad(target_mc.url); //здесь забираем из загруженного ролика url следующего и передаем на рекурсию
};

Читайте про класс, вам без него не обойтись.

alex001 23.07.2009 21:22

но все мувики находяться в папке, не в странице интернета, тогда url...

mooncar 23.07.2009 21:25

Вот в сыром виде:

Код AS1/AS2:

total = 20;
i = 1;
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcLoader.addListener(listener);
 
listener.onLoadInit= function (target_mc:MovieClip) {
        DATARRAY[0] = target_mc.var1; //навсегда забирем данные в основной ролик
        ....
        DATARRAY[N] = target_mc.varN;
        i++;
        //тут можно выгрузить загруженное, если не нужно больше с помощью unloadMovie
        nextLoad(target_mc.nexturl); //здесь забираем из загруженного ролика url следующего и передаем на рекурсию
};
 
function nextLoad (adres) {
        if (i <= total) {
        _root.createEmptyMovieClip("container" + i, i);       
        mcLoader.loadClip(adres, _root["container" + i]);       
        }
};
 
nextLoad ();

Добавлено через 2 минуты
Какая разница, где находятся?
Я говорил об url как о местонахождении загружаемого ролика, хоть http, хоть папку укажите.

alex001 23.07.2009 21:28

а что за url?
я имею в виду откуда он тут, и что делает?

Добавлено через 6 минут
он выдал ошибки.

Код:

Unexpected '}' encountered
Unexpected '.' encountered


mooncar 23.07.2009 21:36

Цитата:

Сообщение от alex001 (Сообщение 837636)
мне нужно не совсем то,
в канце каждого мувика должна стоять команда типо load(lvl2.swf)

Вот это самое "lvl2.swf" - и есть url следующего ролика.
Может быть так:
"data/superswfki/1.swf"
Вам нужно прописать переменную в ролимках, которая бы называлась, если брать мой код, nexturl, и присваивать ей этот самый url, или, если вас это так термин тут смущает, путь.
То есть в каждом ролике пишите адрес следующего:
var nexturl:String = "lvl2.swf"
..
var nexturl:String = "lvl20.swf"
В общем, как хотите, так и управляйте адресацией загружаемых роликов...

Добавлено через 1 минуту
Что значит ошибки?
Вы переменную nexturl пропишите в роликах и синтаксис проверьте, я вам пример накидал, а не рабочий код дал.

Добавлено через 3 минуты
Это компилятор выругался на "....", означающие пропуск некоторого количества элементов, где я показывал как данные в массив загонять, а вы просто даже и не подумавши все запустили. Вы же там говорили, что вам данные нужно забирать из роликов.

Добавлено через 8 минут
А статус загрузки возьмете из
Код AS1/AS2:

listener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
//тут выводите
trace ("загружено " +  loadedBytes + " из " + totalBytes);
}

Учите матчасть про MovieClipLoader - сильно поможет.


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

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