ActionScript 3 uses the AVM2 virtual machine while ActionScript 2 uses the older AVM. This means that they are not in the same sandbox. Thus communication between the two is difficult at best.
AVM2(as3) can load and work with AVM1(as2) but AVM1 cant load AVM2.
Here is an example of how to communicate between the two:
AS3 Example:
import flash.net.LocalConnection;
import flash.display.Stage;
var receiverLC:LocalConnection = new LocalConnection()
receiverLC.connect("__myConnection");
receiverLC.client = this;
var request:URLRequest = new URLRequest("as2Movie.swf");
var loader:Loader = new Loader();
loader.load(request);
mainLoader_mc.addChild(loader);
.
function changeSpeed(speed:Number):void {
stage.frameRate=speed
}
AS2 Example:
var sending_lc:LocalConnection=new LocalConnection()
function changeSpeed(num:Number){
sending_lc.send("__myConnection", "changeSpeed",num);
}
The key is that the AS2 must pass commands back to AS3 - the key is this line:
sending_lc.send("__myConnection", "changeSpeed",num);
So instead of relying on AS2 actions, send your actions to the AS3 container.
Example from: http://flashgosu.com/?tag=as2-to-as3-avm1-to-avm2