Показать сообщение отдельно
Старый 09.07.2010, 18:37
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 8  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Перенесите всё в классы (графику используйте только как asset'ы), добавляйте её в классах и используйте в классах.
Не приписывайте через flash-ide мувиклипам какие-либо классы, вся проблема у вас в этом. Вообще используйте fla только как контейнер для графики (чтобы её править внутри и всё).

У flash-ide очень странное поведение при подобном распределении функциональности мувиклипов.

Добавлено через 9 минут
если после загрузки подождать от 3 до 5 фреймов то ваш класс найдется.

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

Добавлено через 15 минут
Код AS3:
package 
{
	import flash.display.*;
	import flash.display.Sprite;
	import flash.display.Loader;
	import flash.system.ApplicationDomain;
	import flash.net.URLRequest;
	import flash.events.*;
	import flash.system.LoaderContext;
 
	public class Main extends Sprite
	{
		private var loader:Loader;
		private var appDomain:ApplicationDomain;
 
		public function Main()
		{
			var url1:URLRequest = new URLRequest('bottomPanel.swf');
			trace( "main!" );
 
			appDomain = new ApplicationDomain();
 
			loader = new Loader();
 
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onloaderComplete);
			loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
			loader.load(url1,new LoaderContext(false,appDomain));
		}
 
		private var cont : DisplayObject;
 
		private function onloaderComplete(e:Event):void
		{
			cont = loader.content;
			trace ("hasDefinition after Complete: "+ (cont.loaderInfo.applicationDomain.hasDefinition("BottomPanel")));
			this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		private function onInit (e : Event) : void {
			cont = loader.content;
			trace ("hasDefinition after Init: "+ (cont.loaderInfo.applicationDomain.hasDefinition("BottomPanel")));
		}
 
		private var currFrame:uint = 0;
 
		private function enterFrameHandler(event : Event):void
		{
			if (currFrame++ < 5)
			{
				return;
			}
			else
			{
				trace ("hasDefinition after 5 frames: "+ (cont.loaderInfo.applicationDomain.hasDefinition("BottomPanel")));
				this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
				if (loader.contentLoaderInfo.applicationDomain.hasDefinition("BottomPanel"))
				{
					var BottomPanelClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition('BottomPanel') as Class;
					var bottomPanel:Object = new BottomPanelClass();
					trace( 'done' );
				}
				else
				{
					trace("BottomPanel has not found");
				}
			}
		}
	}
}
__________________
Блог, Twitter
Брюзга.


Последний раз редактировалось mayakwd; 09.07.2010 в 18:54.