У нас есть интерфейс IGameClass:

Код:
interface IGameClass {
public function addEventListener():Void;
public function removeEventListener():Void;
}
Есть класс LinkExchanger, хранящий ссылку на интерфейс GameClass:

Код:
import IGameClass;
class LinkExchanger {
public static var game:IGameClass;
}
Есть класс GameClass, реализующий IGameClass:

Код:
import LinkExchanger;
import IGameClass;
import mx.events.EventDispatcher;
class GameClass implements IGameClass {
private var dispatchEvent:Function;
public function GameClass() {
EventDispatcher.initialize(this);
LinkExchanger.game = this;
Mouse.addListener(this);
}
public function addEventListener():Void {
// EventDispatcher native code
}
public function removeEventListener():Void {
// EventDispatcher native code
}
private function toString():String {
return 'GameClass';
}
private function onMouseDown():Void {
this.dispatchEvent({type:'onGameEvent'});
}
}
В load.swf:

Код:
import GameClass;
new GameClass();
В loader.swf:

Код:
import LinkExchanger;
import IGameClass;
clip = this.createEmptyMovieClip('clip_mc',0);
mcl = new MovieClipLoader();
mcl.addListener(this);
onLoadInit = function() {
trace(LinkExchanger.game); // GameClass
LinkExchanger.game.addEventListener('onGameEvent',this);
}
onGameEvent = function(e:Object) {
trace('Game event called from external swf');
}
mcl.loadClip('load.swf',clip);
Нужно помнить, что в интерфейсах могут быть только методы, никаких свойств. Т.е. обращаться к свойствам GameClass нельзя, но можно вызывать его методы. А лучше подписаться на события, что и требовалось.
На выходе в loader.swf не должно быть класса GameClass.