Показать сообщение отдельно
Старый 20.05.2013, 00:58
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Как уже сказал caseyryan, чтобы обратиться к такому добавленному методу расширенного класса, Ваша загружающая свф должна знать этот класс. То есть импортировать его. А это, конечно же, не всегда оптимально и даже не всегда возможно (зачем, спрашивается, делать отдельную свф с классом, который итак имеется в главной свф, да?). Поэтому в таких случаях используют интерфейсы. Интерфейс это тип данных, так же как и класс. Но интерфейс не содержит сам код методов, то есть ничего не делает. Он только гарантирует, что методы с таким названием (с точной сигнатурой) у данного экземпляра точно есть. Интерфейс тоже придется импортировать и в главную свф, и в загружаемую. Но он практически ничего не весит, не привязан ни к какой графике и никак не может вмешиваться в работу программы, поскольку не содержит самих действий.
Попробуйте.
Код AS3:
import a.ITest;
public class loadedClass extends Sprite implements ITest {
		//...
		public function test():void {
			trace("Шалость удалась!");
		}
a/ITest.as
Код AS3:
package a {
	public interface ITest {
		function test():void
	}
}
Код AS3:
import a.ITest;
loader.load(new URLRequest("../lib/loadedClass.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderListener);
 
private function loaderListener(e:Event):void {
		var sprite:ITest = e.currentTarget.content as ITest;
		addChild(sprite as Sprite);
		sprite.test();
}
__________________
Reality.getBounds(this);