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

Zmet 06.12.2006 11:50

Как дождаться загрузки подгружаемого фильма
 
Ситуация.
Есть интерфейс. В него подгружаются фильмы. В зависимости от текущих настроек интерфейса (например, языковых) в подгружаемом фильме происходит управление клипами (например, прозрачностью).

Проблема.
Подгружаемый фильм начинает воспроизводиться по мере загрузки, и в этом случае обращение к объектам этого фильма невозможно (видимо до полной загрузки). Как сделать так, чтобы фильм не начинал проигрываться до полной его загрузки и чтобы проигрывался уже с измененными параметрами? Из Гурского был почерпнут следующий код для подобных ситуаций:
Код:

MovieClip.prototype.onLoad = function() {
        if (this == newMov) {
                trace(zamena.someClip); //выдает undefined
        }
};

Функция срабатывает когда надо. Но почему-то управлять объектами встроенного клипа все равно не получется.

Zmet 06.12.2006 11:53

Кстати, забыла сказать. При обращении к объектам подгружаемого фильма в дальнейшем все замечательно работает.

CorC 06.12.2006 12:00

как начнет подгружаться, останавливай его
лучше всего прелоадер написать для таких вещей
он тебе и процесс распишет как загрузка идет и когда закончится...

Zmet 06.12.2006 12:07

Нет, прелоадер мне совсем не нужен. Собственно вопрос "непроигрывания" фильма до конца загрузки решен (см. функцию выше). Другой вопрос, что непосредственно после этого невозможно обращение к объектам фильма.
Я не понимаю почему и что с этим делать.

Zmet 06.12.2006 12:47

Код:

MovieClip.prototype.onLoad = function() {
        if (this == newMov) {
                trace(newMov._totalframes);
                for (var i in newMov) {
                        if (newMov[i].getDepth) {
                                trace("Объект мувика: " + newMov[i]);
                        } else {
                                trace("Объекты не обнаружены");
                        }
                }
        }
};
bFilm.onRelease = function() {
        newMov.loadMovie("film1.swf");
};

bFilm1.onRelease=function(){
        for (var i in newMov) {
                        if (newMov[i].getDepth) {
                                trace("Объект мувика: " + newMov[i]);
                        } else {
                                trace("Объекты не обнаружены");
                        }
                }
};

Вот полный код фильма, в который подгружается фильм. В подгружаемом фильме (film1.swf) на root лежит три мувика. Кнопка bFilm1 нажимается после нажатия на bFilm.
В аутпуте следующее:

57
Объекты не обнаружены
Объекты не обнаружены
Объект мувика: _level0.newMov.obj3
Объект мувика: _level0.newMov.obj2
Объект мувика: _level0.newMov.obj

Кстати, почему "объекты не обнаружены" два раза (второй появляется при нажатии на вторую кнопку)?

CorC 06.12.2006 13:03

getDepth это метод а не свойство, надо ()

Zmet 06.12.2006 13:07

Может так и правильней :) но работает и без скобочек. Это не принципиально вобщем-то для решения проблемы

CorC 06.12.2006 13:12

Цитата:

Сообщение от Zmet
Кстати, почему "объекты не обнаружены" два раза (второй появляется при нажатии на вторую кнопку)?

потому что глубина у одного из мувиков 0, по всей видимости, вот if и не выполнился

Zmet 06.12.2006 13:17

Да они одинаковые совершенно... все три. Такое ощущение, что там 4 объекта, а не три.
И потом не важно 0 это или 10000... Главное факт наличия, а не значение :)
Ну это тоже вопрос десятый... пока по крайней мере.

CorC 06.12.2006 13:33

Цитата:

Сообщение от Zmet
Главное факт наличия, а не значение

ты не прав, если Depth у мувика 0, то скрипт не зайдет в if
и попробуй заменить MovieClip.prototype на newMov
и вообще почему ты против прелоадеров? зато таких проблем не будет,
он тебе после загрузки сразу же все сделает как надо


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

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