Показать сообщение отдельно
Старый 29.11.2008, 18:22
topinambur вне форума Посмотреть профиль Отправить личное сообщение для topinambur Найти все сообщения от topinambur
  № 1  
Ответить с цитированием
topinambur

Регистрация: Oct 2008
Сообщений: 4
Отправить сообщение для topinambur с помощью ICQ
Post Импорт SWF во FLEX, совместное использование функций

Здравствуйте

У меня возникла задача вставлять SWF на CS3 в флекс-приложение, вызывать функции SWF.

Написал простейший макет.

SWF часть:

Файл Game.as
Код AS3:
package {
	import flash.display.MovieClip;
 
	public class Game extends MovieClip implements IGame {
		public function hello():String {
			return "Hello, world!";
		}
	}	
 
}
Файл IGame.as
Код AS3:
package {
 
	interface IGame{
		function hello():String;
	}
 
}

Флекс часть:

Загрузка SWF:
Код AS3:
 
private function loadSWF():void{
	loader = new Loader();
       	var req:URLRequest = new URLRequest("http://localhost/swf/GameFrame/bin-debug/Game.swf"); 
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSWFComplete); 
	loader.load(req);
}
И обработчик успешной загрузки:

Вот так работает:
Код AS3:
private function loadSWFComplete( event:Event ):void{
	var info:LoaderInfo = event.target as LoaderInfo;
        var str:String = info.content['hello']();
	Alert.show(str);
}
А через интерфейс почему-то нет:
Код AS3:
private function loadSWFComplete( event:Event ):void{
	var info:LoaderInfo = event.target as LoaderInfo;
	var loadable:IGame = info.content as IGame;
	if(loadable){
		var str:String = loadable.hello();
		Alert.show(str);
	}
}
Перелопатил уже пол-интернета, но решения так и не нашел. Почему же оно через интерфейс все-таки не работает?


Последний раз редактировалось topinambur; 29.11.2008 в 20:48.