Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.02.2011, 16:31
Vilya21 вне форума Посмотреть профиль Отправить личное сообщение для Vilya21 Найти все сообщения от Vilya21
  № 1  
Ответить с цитированием
Vilya21

Регистрация: Aug 2009
Сообщений: 75
По умолчанию Загрузка swf в свою swf.

Здравствуйте.
Пытаюсь загрузить swf с помощью класса Loader, как это написано в справке адоби:
http://help.adobe.com/en_US/FlashPla...ay/Loader.html

вот мой код:

Код AS3:
/**
	 * ...
	 * @author Vilya
	 */
	public class Main extends Sprite 
	{
		var ldr:Loader = new Loader();
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			var req:URLRequest = new URLRequest('castle.swf');
			ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onSwf_load );
			ldr.load(req);
			addChild(ldr);
		}
 
 
		private function onSwf_load(e:Event):void {
			ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, onSwf_load );
			trace('loaded');
		}
	}

Проблема в том что функция onSwf_load() почему-то зацикливается и постоянно вываливается трэйс "loaded" и загруженная swf-ка не добавляется на сцену =(. В чём проблема?

При чём если убрать addChild(ldr) - то загрузка происходит только 1 раз. Всё это работает только с swf-ками, собранными из Flash IDE, в которых нет кода. Если же swf-ка с кодом, то FD показывает окошко "Internal debuger exception", но ни номера, ни причины ошибки не пишет.... =(


Последний раз редактировалось Vilya21; 23.02.2011 в 17:06.
Старый 23.02.2011, 17:26
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 2  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
Если заголовок отражает суть, т.е. свфка грузит саму себя, то ничего странного нет. Просто её код выполняется снова и снова. Если же убрать addChild(ldr);, то выполнение кода загруженной свфки прекратится при условии if (stage) init();

Старый 23.02.2011, 18:04
Vilya21 вне форума Посмотреть профиль Отправить личное сообщение для Vilya21 Найти все сообщения от Vilya21
  № 3  
Ответить с цитированием
Vilya21

Регистрация: Aug 2009
Сообщений: 75
Нет, нет - грузится другая swf-ка.

Старый 23.02.2011, 19:12
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Ну а перенос addChild(ldr) в функцию onSwf_load() ситуацию не исправляет?

Старый 23.02.2011, 19:27
Vilya21 вне форума Посмотреть профиль Отправить личное сообщение для Vilya21 Найти все сообщения от Vilya21
  № 5  
Ответить с цитированием
Vilya21

Регистрация: Aug 2009
Сообщений: 75
Не, абсолютно то же самое.

Добавлено через 7 минут
Попробовал добавить в TextField htmlText "yo <img src = 'castle.swf' id = 'castleName'>".

Так вот если в swf чисто графика - то она добавляется прекрасно, а если вместе с кодом - то либо добавление swf-ки опять зацикливается, либо вылазит "Internal debuger exception".

Добавлено через 1 час 27 минут
Долго крутил, мутил - вот что получается:

Код AS3:
public function Main():void {
			trace('main');
			if (stage)   init() 
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			trace('init()');
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			var req:URLRequest = new URLRequest('castle.swf');
			ldr.load(req);
			addChild(ldr);
		}
Так вот swf-ки без кода загружаются отлично, а swf-ки, которые начинаются также как эта - зацикливаются. Видимо я что-то не понимаю в обьекте stage и в порядке его загрузки. Ведь получается что как только загружается castle.swf - снова вызывается ф-ия Main(), затем init(), опять происходит загрузка castle.swf и всё по-новой....

Почему так происходит? Что я не понимаю?

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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