Accueil > Code > Et boum !

Et boum !

Un petit crash du player 9 !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package net.tynambule.exp {
	import flash.display.MovieClip;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.display.Loader;
	[SWF(backgroundColor="#ffffff", frameRate="250", width="100", height="100")]
	public class MovieClipSpriteTest extends Sprite
	{
		public function MovieClipSpriteTest()
		{
			var l : Loader = new Loader();
			l.contentLoaderInfo.addEventListener(Event.INIT, onLoadInit);
			// Un SWF Flash 9/AS3 avec "Document class" défini à "MobileSprite"
			l.load(new URLRequest("swfexterne.swf"));
		}
		private function onLoadInit(e : Event) : void
		{
			var MobileSprite : Class = (e.target as LoaderInfo).applicationDomain.getDefinition("MobileSprite") as Class;
			var instance : MovieClip = new MobileSprite() as MovieClip;	// KA-BOOM
			this.addChild(instance);
		}
	}
}

Ce code fonctionne très bien si l’on utilise l’option « Linkage » d’un clip dans la bibliothèque, mais crash lamentablement si on place directement nos éléments sur la scène et que l’on défini une « Document class ». À noter que c’est l’instanciation de la classe récupérée qui foire, et non pas sa récuperation. Si l’on fait un describeType sur MobileSprite dans le code ci-dessus avant de créer l’instance, le retour est normal, il s’agit bien d’une classe qui étend bien MovieClip.

C’est pô bô. Allez, salut.

Categories: Code Tags: ,
  1. Kodiak
    25/02/2008 à 16:32 | #1

    Salut ! Merci pour ton code, ça m’a été bien utile.
    Tu saurais si on peut faire le même genre de chose (instancier un sprite de la biliothèque linké) sans loader mais avec un meta Embed ?
    En gros, inclure une bibliothèque externe à la compilation pour se servir de ses sprites.

  1. Pas encore de trackbacks