This is a quick post to recommend using Spark projects ForcibleLoader (available here) class if you're ever in the situation of needing to load an old AS2 swf (that you probably have no source to) as an AS3 swf within an AS3 project.
You will then end up with a MovieClip
rather than an AVM1Movie
, and are able to manipulate it as you would a basic MovieClip
class.
Unfortunately this won't let you load up scripted AS2 swfs and interact with them as though they were AS3, but in certain circumstances it can be a massive time saver (as I found recently).
Below is a simple use example. It doesn't really need any explanation, as it's all fairly straight forward.
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import org.libspark.utils.ForcibleLoader;
public class Main extends Sprite
{
public var loader:Loader;
public var forceLoader:ForcibleLoader;
public function Main()
{
loader = new Loader();
forceLoader = new ForcibleLoader( loader );
loader.contentLoaderInfo.addEventListener(
Event.COMPLETE, loadCompleteHandler );
loader.contentLoaderInfo.addEventListener(
IOErrorEvent.IO_ERROR, ioErrorHandler );
loader.contentLoaderInfo.addEventListener(
SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler );
forceLoader.load( new URLRequest( "anOldAs2Movie.swf" ) );
}
private function loadCompleteHandler(e:Event):void
{
//TODO handle load
}
private function securityErrorHandler(e:SecurityErrorEvent):void
{
//TODO handle some security errors
}
private function ioErrorHandler(e:IOErrorEvent):void
{
//TODO handle some IO errors
}
}
}