Связь внешнего SWF-файла с внешним SWF-файлом по шкале времени, Flash, AS2

Flash CS4, AS2

Сделал интерактивный тур. Здесь можно увидеть:

http://www.92YTribeca.org/Tour щелкните изображение внизу

Каждый из 4 разделов является внешним swf и загружается на уровне 1. Я хочу, чтобы кнопка на одном swf (плане этажа) загружала другой swf (аренда помещений) И определяла конкретный кадр на временной шкале swf.

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

Возможно ли то, что я хочу делать? Если да, то как мне написать код?

Спасибо!


person jecca411    schedule 01.10.2009    source источник


Ответы (4)


То, что вы хотите делать, определенно возможно. Вам нужно подождать, пока SWF загрузится, прежде чем вы сможете указать ему перейти к определенному кадру. Самый простой способ сделать это - использовать класс MovieClipLoader.

var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);

function onLoadComplete(loadedClip) {
    loadedClip.gotoAndStop(5);
}

loader.loadClip("floorplan.swf", targetClip);

Это загрузит floorplan.swf в заполнитель с именем "targetClip", и после его загрузки необходимо будет перейти к кадру 5.

Дополнительную информацию см. В документации MovieClipLoader: http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=00001993.html

person thehiatus    schedule 02.10.2009
comment
хорошо, все еще не работает ... Вот код, который я использую: btnFLRcafe.onRelease = function () {var loader: MovieClipLoader = new MovieClipLoader (); loader.addListener (это); функция onLoadComplete (loadedClip) {loadedClip._root.mcRENTALS.gotoAndStop (CAFE); } loader.loadClip (maps_92Tri_RentalsMain.swf, 1); } Я поместил этот код на шкалу времени действий в MC с кнопкой (btnFLRcafe). - person jecca411; 05.10.2009
comment
продолжение Когда нажимается btnFLRcafe, я хочу, чтобы он загружал maps_92Tri_RentalsMain.swf на уровень 1 и воспроизводил фрейм с именем CAFE из MC mcRENTALS. Прямо сейчас кнопка загружает maps_92Tri_RentalsMain.swf на уровень 1, но не переходит в CAFE на временной шкале. Пожалуйста помоги! Спасибо! - person jecca411; 05.10.2009
comment
Ваша проблема может быть связана с объемом. Поскольку, если я правильно это понимаю, загрузчик и слушатель объявлены внутри функции onRelease. Попробуйте объявить их вне события onRelease и просто вызвать внутри него loader.loadClip (). Определение объема в AS2 может быть странным, особенно при его использовании. Вы также можете попробовать установить переменную вне функции onRelease (var t = this;), а затем добавить слушателя к этой переменной: loader.addListener (t); Я бы также добавил несколько следов, чтобы увидеть, вызывается ли когда-либо событие onLoadComplete. - person thehiatus; 06.10.2009
comment
До сих пор не работает. onLoadComplete не вызывается ... трассировка не отображается. Я не знаю что делать. - person jecca411; 07.10.2009
comment
Может быть, попробуйте переместить код из фрагмента ролика на основную временную шкалу. Если фрагмент ролика, содержащий код, не существует при загрузке нового файла .swf, событие onLoadComplete никогда не будет получено. Переходит ли _root.mcRENTALS.gotoAndStop (CAFE) к кадру, где клип, содержащий btnFLRcafe, удален или изменен? Вы также можете просто переместить слушателя в корневой клип: load.addListener (_root), а затем поместить функцию onLoadComplete в корневой клип. - person thehiatus; 10.10.2009

Поскольку вам удается их идеально загрузить, я думаю, проблема не в этом. Распространенная проблема заключается в том, что вам нужно вызвать функцию gotoAndStop, когда клип полностью загружен, вы сделаете это при вызове обработчика onLoadInit слушателя MovieClipLoader.

person Theo.T    schedule 02.10.2009

Попробуй это:

var MC1:MovieClipLoader = new MovieClipLoader();
MClistener = new Object();
MClistener.onLoadComplete = function() {
     trace("LOADED COMPLETED");
};    
MC1.addListener(MClistener); 
MC1.loadClip("Whatever.swf", "adLoader");
person Jeffrey Thomas    schedule 30.10.2009

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

var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this);
function onLoadComplete(loadedClip) {
  loadedClip.gotoAndStop(2);
}
loader.loadClip("chapter1.swf", targetClip);

Единственное, что я не могу понять, это как сделать действие on (нажать) на сообщение для кадра два загруженного swf вместо действия onLoadComplete.

person Richard A    schedule 12.03.2010
comment
Для последующего запроса лучше опубликуйте новый вопрос, чтобы больше людей его увидели. - person sth; 13.03.2010
comment
Я не мог заставить это работать .. Я использовал этот код: btnFLRcafe.onRelease = function () {loader.loadClip (maps_92Tri_RentalsMain.swf, 0); } var loader: MovieClipLoader = new MovieClipLoader (); loader.addListener (это); функция onLoadComplete (loadedClip) {loadedClip.gotoAndStop (КАФЕ); } Я пробовал все виды аранжировок ... Это загрузит swf, но он все равно не сдвинется вниз по шкале времени. Думаю, мне придется объединить два внешних элемента в одно ... - person jecca411; 28.05.2010