PDA

View Full Version : Trouble assigning the value of a property in an externally loaded SWF to a local var



derrickcurry
March 13th, 2009, 02:01 PM
A have a external SWF file that contains an instance of an object that will be used across multiple projects. It's accessible as a public property of the external SWF.

When I load the external SWF file using the Loader class everything comes in fine but when I try to assign the value of that property, which traces out as an instance of the correct object, to a local variable the local variable is always null.

Below is a dumbed down sample of what I'm trying to accomplish:

# Object Class


package com.derrickcurry
{
import flash.display.Sprite;

public class MyObject extends Sprite
{
public function MyObject():void
{
trace("- MyObject -");
}

public function doWork():void
{
// Does something
}
}
}# External SWF Document Class


package
{
import com.derrickcurry.MyObject;
import flash.display.Sprite;

public class MyExternalMovie extends Sprite
{
public var instance:MyObject;

public function MyExternalMovie():void
{
this.instance = new MyDocument();
}
}
}# SWF Document Class that the loads the External SWF from above


package
{
import flash.display.Sprite;
import com.derrickcurry.MyObject;

public class MyMovie extends Sprite
{
private var myObject:Object;

public function MyMovie():void
{
if (!this.myObject)
{
var url:URLRequest = new URLRequest("http://somedomain.com/MyExternalMovie.swf");

var loader:Loader = new Loader();

loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, onMyExternalMovieLoaded);
loader.load(url);

addChild(loader);
}
}

private function onMyExternalMovieLoaded(e:Event):void
{
this.myObject = e.target.content;

trace(this.myObject); // traces [object MyExternalMovie]
trace(this.myObject.instance); // traces [object MyObject]

var localObject:MyObject = this.myObject.instance as MyObject;

trace(localObject); // traces "null"
}
}
}Is there a reason why I can't take the value from a property of the externally loaded SWF and assign it to a local variable?

Iamthejuggler
March 13th, 2009, 02:43 PM
Try

var localObject:MyObject = (this.myObject as MyExternalMovie).instance as MyObject;