Показать сообщение отдельно
Старый 21.07.2011, 14:26
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
вариант 1 (Scene - дисплейОбжект, имеет доступ к stage после addChild(sc))
Код AS3:
public class Main extends Sprite 
{
	[Embed("FormMain.xml", mimeType = "application/octet-stream")] private static const EmbedModel:Class; 
	public function Main():void 
	{
		var file:ByteArray = ((new EmbedModel()) as ByteArray);
		var str:String = file.readUTFBytes( file.length );
		var xml:XML = new XML( str );
		var sc:Scene = new Scene(xml);
		addChild(sc);// после этого stage будет доступен в самом sc
	}
}
Код AS3:
public class Scene extends Sprite 
{
	public function Scene(xml:XML) 
	{
		trace( "xml : " + xml );
		addEventListener(Event.ADDED_TO_STAGE, init);
	}
 
	private function init(e:Event = null):void 
	{
		removeEventListener(Event.ADDED_TO_STAGE, init);
		// здесь stage это 'родное' свойство Sprite, доступное после добавления 'на сцену'
		stage.align = StageAlign.TOP_LEFT;
	}
 
}
вариант 2 (sc не добавляем на сцену, он вообще не обязательно должен быть дисплейОбжектом
Код AS3:
public class Main extends Sprite 
{
	[Embed("FormMain.xml", mimeType = "application/octet-stream")] private static const EmbedModel:Class; 
	public function Main():void 
	{
		var file:ByteArray = ((new EmbedModel()) as ByteArray);
		var str:String = file.readUTFBytes( file.length );
		var xml:XML = new XML( str );
		var sc:Scene = new Scene(xml, stage);
	}
}
Код AS3:
public class Scene 
{
 
	public function Scene(xml:XML, stage:Stage) 
	{
		trace( "xml : " + xml );
		// здесь stage это ссылка переданная из объекта, уже имеющего ее
		stage.align = StageAlign.TOP_LEFT;
		trace( "stage : " + stage );
 
	}
}


Последний раз редактировалось silin; 21.07.2011 в 14:29.