Форум 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)
-   -   Выгрузить swf (http://www.flasher.ru/forum/showthread.php?t=179569)

KHVshNic 17.05.2012 12:54

Выгрузить swf
 
Здравствуйте, чтобы не начинать swf с начала а переходить на нужный кадр, я подгружаю его в пустой мувик и задаю командуперехода на 55 кадр. все работает, но есть небольшой ньанс.
Когда я таким путем перехожу из одного файла в другой ( в обоих реализован переход на 55 кадр) несколько раз, проект начинает натурально лагать. кнопки туго соображают, скролл с лекцией перестает прокручиваться плавно и начинает слайд шоу((
В чем может быть проблема? Наверно после перехода, предыдущий swf как то выгрузить надо? я получается в один контейнер ( и в первом и во втором файле, контейнер container_mc)
загружаю много копий одних и тех же файлов?

p.s. капец, специально отрыл диспетчер задач, и после каждого перехода, смотрел вес процесса, действительно, с каждым разом, вдвое увеличивается((( Хелп! как решить?

mooncar 17.05.2012 12:55

Код AS1/AS2:

container_mc.unloadMovie()


KHVshNic 17.05.2012 13:05

Попробовал в каждом файле писать так
Код AS1/AS2:

this._lockroot = true;
this.createEmptyMovieClip("container_mc",0);
container_mc.unloadMovie();

все равновес увеличивается и лагает(

Подгружаю мувик так
Код AS1/AS2:

Prev.onRelease = function()
{
                var mcLoader:MovieClipLoader = new MovieClipLoader();
        _root.q = 55;
        mcLoader.loadClip("Lection1.swf",_root.container_mc);
 
 
};

может сюда куда нить это писать надо?

mooncar 17.05.2012 13:15

В каждом файле пишите эту конструкцию?
Код AS1/AS2:

this._lockroot = true;
this.createEmptyMovieClip("container_mc",0);
container_mc.unloadMovie();

А я так сперва понял, у вас есть основная флешка, и несколько подгружаемых.

PS:
Код AS1/AS2:

this.createEmptyMovieClip("container_mc",0);
container_mc.unloadMovie();

- не имеет смысла. После создания пустого на том же уровне предыдущий стирается (в общем случае - без последствий).

KHVshNic 17.05.2012 13:20

Нет, в идеале у меня одна флешка, заменяется другой, все на нулевом уровне.
Но с этим контейнером непонимаю. он как будто забивается.

каждый раз пишу, т.к. начать просмотр можно с любой лекции (1~6), соответсвенно в каждый есть код создания контейнера. может проще реально сделать?
в самом первом файле, где выбор лекции, создать пустой клип, но все равно, надо же выгружать как то файлы, а они что то не выгружаются никак...

mooncar 17.05.2012 13:27

1. Создаете пустой контейнер, один раз.
Код AS1/AS2:

this.createEmptyMovieClip('container_mc', 0);
container_mc._lockroot = true ;

2. Создаете один экземпляр MCL и слушатель для него.
(код не пишу, тут все ясно)

3. При нажатии некой кнопки останавливаем воспроизведение предыдущего (если оно было, тут бы еще условие по хорошему надо), выгружаем и грузим новую swf-ку:

Код AS1/AS2:

btn.onRelease = function()
{
  container_mc.stop();
  container_mc.unloadMovie();
  mcl.loadClip('someurl.swf', container_mc);
};

4. Ну и насчет 55-го кадра:
Код AS1/AS2:

listener.onLoadInit = function(tgt:MovieClip)
{
  tgt.gotoAndPlay(55); //или tgt.gotoAndStop(55), вам виднее
};


KHVshNic 17.05.2012 14:05

Все сделал, контейнер создал в файле, где выбор лекции.
лоадер добавил
Код AS1/AS2:

var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(onLoad);

Вообще никуда не переходит, кнопка не реагирует о.О изменил конечно на свою, L1
и имя экземпляра L1. и идентификатор АС L1.

Капец, у меня перестали работать все кнопки на лекции в этом файле.
Я непонимаю с чем это связано.
Уже и удалил весь код лишний, все равно не работает, там обычный
on (release) {
loadMovieNum прописан((((

Добавлено через 1 час 42 минуты
С проблемами разобрался. переходы работают, вернулся к тому с чего начал...

если ли аналог container_mc.unloadMovie(); ?
И почему файлы остаются "в буфере" ? разве если они все на одном уровне, они не должны заменятся?

Добавлено через 2 часа 2 минуты
Дубль 2)

Код AS1/AS2:

this.createEmptyMovieClip('container_mc', 0);
container_mc._lockroot = true ;
 
var my_mcl:MovieClipLoader = new MovieClipLoader();
var my_lst:Object = new Object();
my_mcl.addListener(my_lst);
stop();

Создаю контейнер и лоадер.

Код AS1/AS2:

Next.onRelease = function()
{
  container_mc.stop();
  container_mc.unloadMovie();
my_mcl.loadClip('Lection2.swf', container_mc);
};
listener.onLoadInit = function(tgt:MovieClip)
{
  tgt.gotoAndStop(55);
};

грузим файл.
Кстати, это наверно важно. Кнопки у меня находятся в мувикэ и я в нем на отдельном свое пишу вот код загрузки.
Но я пробовал писать
Код AS1/AS2:

_root.my_mcl.loadClip('Lection2.swf', container_mc);

кнопка вообще не реагирует.

Добавлено через 2 часа 17 минут
Весь код написал в один кадр, путь кнопке поменял
Код AS1/AS2:

_root.Knopaki.Next.onRelease = function()

перешелко второй лекции. абсолютно тотот же код написал там, поменял кноку и загружаемый файл. и.....а нифига.
Ноль реакции на нажатие. буду бится головой апстол:\\\

Добавлено через 3 часа 28 минут
ничего не работает почему то.
если я в одном файле создал контейнер, нормально перехожу во второй файл а от туда уже никак.
кнопка не реагирует. в чем может быть проблема?

Добавлено через 14 часов 50 минут
Я не понимаю причины. Один и тот же код, одно и то же все.
Но в одном файле он работает, а в другом нет.
Если надо могу скинуть исходник, правда весит ~100 Мб.
Срочно нужна помощь с этой проблемой!

Добавлено через 14 часов 58 минут
Цитата:

Сообщение от mooncar (Сообщение 1080008)
1. Создаете пустой контейнер, один раз.
Код AS1/AS2:

this.createEmptyMovieClip('container_mc', 0);
container_mc._lockroot = true ;

2. Создаете один экземпляр MCL и слушатель для него.
(код не пишу, тут все ясно)
[/as]

Ну написал я в 1 файле этот код, во втором только команду перехода, из первого во второй переходит отлично, а обратно никак. как будто и нету контейнера. А когда пишу в обоих создание контейнера, он естественн оведет себя как у меня и было - забивает память.
Подскажите хоть где почитать про выгрузку из контейнера при загрузке другого swf? они должы заменять друг друга!

KHVshNic 18.05.2012 09:25

Как очистить контейтер?
 
Привет, забивается контейнер и плеер начинает очень много весить.
Код AS1/AS2:

this.createEmptyMovieClip('container_mc',0);
container_mc._lockroot = true;
 
var my_mcl:MovieClipLoader = new MovieClipLoader();
var my_lst:Object = new Object();
my_mcl.addListener(my_lst);
stop();
 
btn.onRelease = function()
{
        container_mc.stop();
        container_mc.unloadMovie();
        my_mcl.loadClip('Lec2.swf',container_mc);
};
my_lst.onLoadInit = function(tgt:MovieClip)
{
        tgt.gotoAndStop(55);
};

Пробовал писать unloadMovie, но все равно, после перехода из одного файла в другой, процесс плеера, начинает весить в двое больше и тормозить...
Есть ли другой способ?
Может использовать как то removeMovieClip ?

Добавлено через 3 часа 59 минут
Разве нельзя, загрузить в контейнер мувик, дать команду перейти на нужный кадр, а потом выгрузить файл с контейнером ?

Добавлено через 5 часов 41 минуту
Вот исходники
http://sendfile.su/595517
Может кто по ним чего посоветует?
я уже все перепробовал(((


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

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