Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: загрузка swf-файла(сферическая панарама) в Flash 8
Flash Zone Forum > Macromedia Flash > ActionScript
rambayke
 загрузка swf-файла(сферическая панорама) в Flash 8:
имеется несколько swf-файлов(сферические панорамы), нужно запускать их на событие кнопки:

on (press) {

_root.createEmptyMovieClip("mc",1);
var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip("pic.swf",_root.mc);

}

но при нажатии появляется синий прямоугольник, сферической панорамы нет.
где ошибка?
chingachgoog
Возможно, сферическая панорама - файл со скриптом на AS3. В этом при загрузке AVM2 (панорамы) в AVM1 (контейнер) будет видна только графика - а код исполняться не будет!
MustLive
rambayke

Весьма вероятно, что ситуация именно такая, как описал chingachgoog - разные версии AS используются во флешках (AS1/2 в твоей и AS3 в панорамах). Поэтому тебе нужно будет или найти себе панорамы с кодом на AS2, или же переделать свою флешку в более новых Flash редакторах (CS3, CS4 или CS5), которые поддерживают AS3. Чтобы версии AS (и AVM) совпадали.
rambayke
 спасибо за советы! smile.gif
переделал  панораму,  работает.  нужно было при создании панорамы указать проигрыватель Flash 8, а не QuickTime. я как-то сразу не заметил...
теперь все загружает, только открывается на все окно. бьюсь теперь о другом:

загружаю :

this.createEmptyMovieClip("mc",this.getNextHighestDepth());
var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip("My11.swf ",_root.mc);
_parent.mc.play();

пробовал изменить размеры мувика:

mc._width(300);
mc._height(300);

резутьтат 0.

в общем SWF-файл по проще тоже открывается, но полюбому на все окно.

loadMovieNum("My11.swf","");
....
_root.createEmptyMovieClip("pic",1);
_root.pic.loadMovie("MyMovie.swf");

как установить определенный размер загружаемого SWF-файл, так чтобы в окне оставалось место для других элементов? например для кнопки "Next"



chingachgoog
QuickTime когда-то открывал нормально флеш. А потом перестал... Что-то с версиями ФП наверное.
А по вопросу размеров - их надо изменять после того, как мувик загрузится и инициализируется.
rambayke
Цитата(chingachgoog @ 15.03.2011 - 15:08) *
по вопросу размеров - их надо изменять после того, как мувик загрузится и инициализируется.


это на каком событии???
разве после loader.loadClip("My11.swf ",_root.mc) мувик mc не загрузился???
ведь mc._width(300); mc._height(300); я пишу сразу после loader потом закрываю"}" on(press).

примерно вот так:
on (press)
{
this.createEmptyMovieClip("mc",this.getNextHighestDepth());
var loader:MovieClipLoader = new MovieClipLoader();
loader.loadClip("My11.swf ",_root.mc);
_parent.mc.play();

mc._width(300);
mc._height(300);
}
MustLive
Цитата
как установить определенный размер загружаемого SWF-файл

Как уже тебе сказал chingachgoog, изменяй размеры после завершения загрузки.

Цитата
это на каком событии???

rambayke, на событие onLoad.

Цитата
разве после loader.loadClip("My11.swf ",_root.mc) мувик mc не загрузился???

Нет, не загрузился smile.gif. Он только начал грузится - и завершит загрузку через некоторое время, которое зависит от размера подгружаемого файла.

Укажи следующий код после loader.loadClip:

Код
loader.onLoad = function () {
_root.mc._width = 300;
_root.mc._height = 300;
_root.mc.play();
}
chingachgoog
Команда MovieClipLoader.loadClip - асинхронная. Т.е. мы дали ФП указание скачать что-то, но когда это скачается - нам неизвестно и пора выполнять следующий код. Соответственнос у класса MovieClipLoader есть события. Вам нужно событие инициализации onLoadInit.

PS

При локальном запуске ФП картина все же иная. По факту загрузка СИНХРОННАЯ! Это знают все, кто пробовал сделать прелоадер для десктопного флеш-приложения. Т.е. сразу после команды загрузки мувик грузится и ТОЛЬКО ПОТОМ выполняется следующая строчка кода. Но это соответствует не событию onLoadInit, которое нам надо, а событию onLoadComplete. Событие onLoadInit произойдет в момент когда весь код кадра отработает и начнется переход  следующий кадр. Т.е. все равно придется юзать onLoadInit )))
rambayke
this.createEmptyMovieClip("tester_mc", 1);
var mclListener:Object = new Object();

mclListener.onLoadInit = function (target_mc:MovieClip)
{
trace("Ролик загрузился!");
};

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);

tester_mc._height=300;
tester_mc._width=300;

image_mcl.loadClip("My11.swf", tester_mc);

также на весь экран раскрывается
chingachgoog
Код
mclListener.onLoadInit = function (target_mc:MovieClip)
{
  trace("Ролик загрузился!");
  tester_mc._height=300;
  tester_mc._width=300;
};
rambayke
chingachgoog, вот этот код стоит в чистом виде, больше ничего лишнего, и ролик раскрывает на весь экран

on (press)
{
this.createEmptyMovieClip("tester_mc", 1);
var mclListener:Object = new Object();

mclListener.onLoadInit = function (target_mc:MovieClip)
{
trace("Ролик загрузился!");
tester_mc._height=100;
tester_mc._width=100;

};

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("My11.swf", tester_mc);

}

на сцене одна кнопка и стоит.
я что-то не правильно делаю??? huh.gif
на все окно и масштабируется  вместе с окном...
chingachgoog
Трейс-то выводит или нет? Если выводит, попробуйте вот так:

Код
trace("Было изначально. Фул скрин="+Stage.displayState+" выравнивание="+Stage.scaleMode+" "+Stage.align);

mclListener.onLoadInit = function (target_mc:MovieClip)
{
  trace("Ролик "+target_mc+" загрузился! Фул скрин="+Stage.displayState+" выравнивание="+Stage.scaleMode+" "+Stage.align);
  target_mc._height=100;
  target_mc._width=100;  
};


Вообще, не зная кода в подгружаемом мувике, трудно вот так сразу угадать как там сделано.
Напишите, что говорят трейсы и что выходит.
rambayke
Нажмите для просмотра прикрепленного файла

это та самая панорама
rambayke
 трейс выводит без проблем! "Ролик загрузился!"
rambayke
" Было изначально. Фул скрин=undefined выравнивание=noScale
Ролик _level0.tester_mc загрузился! Фул скрин=undefined выравнивание=noScale "
chingachgoog
Код
on (press)
{
this.createEmptyMovieClip("tester_mc", 1);
var mclListener:Object = new Object();

mclListener.onLoadInit = function (target_mc:MovieClip)
{
trace("Ролик загрузился! "+tester_mc+" "+tester_mc._height+" "+target_mc+" "+target_mc._height);
tester_mc._height=100;
tester_mc._width=100;

setTimeout(function(){
                    trace("Ролик загрузился! "+tester_mc+" "+tester_mc._height+" "+target_mc+" "+target_mc._height);
                    for (var i in _root) {
                        trace(i+" "+typeof(_root[i]))
                    }
                    target_mc._parent.swapDepths(_root.getNextHighestDepth())
                    trace("+"+_root.panomask._height+" "+_root.cv._height)
                    _root.panomask._height=100
                    _root.cv._height=100
                     }, 12000)

};

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("My11.swf", tester_mc);

}


вообщем панорама генерится отдельно и выбрасывается в рут
rambayke
Цитата(chingachgoog @ 15.03.2011 - 20:24) *
Код
on (press)
{
this.createEmptyMovieClip("tester_mc", 1);
var mclListener:Object = new Object();

mclListener.onLoadInit = function (target_mc:MovieClip)
{
trace("Ролик загрузился! "+tester_mc+" "+tester_mc._height+" "+target_mc+" "+target_mc._height);
tester_mc._height=100;
tester_mc._width=100;

setTimeout(function(){
                    trace("Ролик загрузился! "+tester_mc+" "+tester_mc._height+" "+target_mc+" "+target_mc._height);
                    for (var i in _root) {
                        trace(i+" "+typeof(_root[i]))
                    }
                    target_mc._parent.swapDepths(_root.getNextHighestDepth())
                    trace("+"+_root.panomask._height+" "+_root.cv._height)
                    _root.panomask._height=100
                    _root.cv._height=100
                     }, 12000)

};

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("My11.swf", tester_mc);

}


вообщем панорама генерится отдельно и выбрасывается в рут


понятно. спасибо!!! работает! мне нужно еще разобрать этот код, сам бы не написал...
rambayke
 откуда panomask и cv появились??? их нельзя заранее определить? а то он на все окно открывается, а потом тока умельшается
chingachgoog
My11.swf их генерит (аттачит в рут). Туда же в рут добавляется onEnterFrame какой-то.
В принципе задача решаемая, но не в лоб.
Можно декомпилить My11.swf и изменить код. Можно сделать какой-нибудь хардкор с ASNative.
Русская версия IP.Board © 2001-2013 IPS, Inc.