J'ai un BuildingSprite qui étend Sprite. J'essaye de charger la bibliothèque externe de swf dans mon application principale.Chargement de swf externe et affectation à la classe personnalisée
J'ai ce code et il fonctionne très bien:
private function loadBuilding():void{
// this context is necessary to find the shared assets
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
// load in the asset swf
var loader:Loader = new Loader();
var req:URLRequest = new URLRequest("assets/Tree.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onAssetsLoaded);
loader.load(req, context);
}
private function onAssetsLoaded(_event:Event):void{
// get a reference to the loaded library
var loader:Loader = LoaderInfo(_event.target).loader;
var library:* = loader.content;
var assetClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("Tree") as Class;
// create an instance of the shared asset
var mySprite:Sprite = new assetClass();
.....
}
J'ai créé une nouvelle classe - BuildingSprite qui s'étend Sprite:
package
{
import flash.display.Sprite;
public class BuildingSprite extends Sprite
{
public function BuildingSprite()
{
super();
}
}
}
Et de la onAssetsLoaded ci-dessus, je change le code:
var mySprite:Sprite = new assetClass();
à
var mySprite:BuildingSprite = new assetClass();
debugger et obtenir cette erreur: thread principal (Suspendu: TypeError: Erreur # 1034: Type Coercion a échoué: ne peut pas convertir arbre @ c8f0301 à BuildingSprite.)
Je pense qu'il ya une erreur de coulée de type . Est-il possible de charger la bibliothèque SWF externe et de l'assigner à une classe personnalisée?