J'essaie d'attacher une partie de ma classe ActionScript, héritée de Sprite, à mon application Flex en l'attachant à un composant UIComponent, puis d'ajouter UIComponent à un panneau. Cependant, la taille de ma classe Sprite semble être plus grande que celle du panneau. Donc, j'essaye de le redimensionner en utilisant la propriété DisplayObject.scale, mais j'ai besoin de connaître la taille de mon conteneur. Puisque j'essaie de rendre mon code réutilisable, je suppose que je devrais laisser ma classe Sprite gérer le redimensionnement en l'obtenant via sa propriété parent (disons, je peux le redimensionner par jeuFlex: comment redimensionner DisplayObject pour s'adapter à un panneau dans l'application Flex
this.scaleX = this.parent. largeur/this.largeur ou quelque chose comme ça)
Cependant, mon parent de la classe Sprite, qui est le UIComponent, a une largeur/hauteur de 0. donc, ma question est: 1) y at-il une meilleure façon de redimensionner Classe DisplayObject pour adapter son conteneur lorsqu'il est attaché à l'objet Flex? 2) Si vous savez, pourquoi la taille de mon UIComponent reste 0 et mon DisplayObject apparaît toujours à sa taille maximale?
Voici mon code, en utilisant Flash Builder 4:
private var loader:Loader = new Loader(); private function testLoader():void { var urlRequest:URLRequest = new URLRequest("http://localhost/welcome.png"); loader.load(urlRequest); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderLoadComplete); } private function onLoaderLoadComplete(e:Event):void { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoaderLoadComplete); var ui : UIComponent = new UIComponent(); ui.addChild(loader); panelTest.addElement(ui); trace("ui.width = " + ui.width); trace("ui.height = " + ui.height); trace("loader.width = " + loader.width); trace("loader.height = " + loader.height); trace("panelTest.width = " + panelTest.width); trace("panelTest.height = " + panelTest.height); }
Et ceci est le résultat lorsqu'il est exécuté:
ui.width = 0 ui.height = 0 loader.width = 571 loader.height = 411 panelTest.width = 480 panelTest.height = 320
J'ai modifié le code pour tracer après ui a été ajouté à la scène, comme celui-ci: fonction privée onLoaderLoadComplete (e: Event): void { loader.contentLoaderInfo.removeEventListener (Event.COMPLETE, onLoaderLoadComplete); \t \t \t ui.addChild (chargeur); ui.addEventListener (Event.ADDED_TO_STAGE, onUILoadComplete); panelTest.addElement (ui); } – ohm
fonction privée onUILoadComplete (e: Evénement): void { ui.removeEventListener (Event.ADDED_TO_STAGE, onUILoadComplete); trace ("ui.width =" + ui.width); trace ("ui.height =" + ui.height); trace ("loader.width =" + loader.width); trace ("loader.height =" + loader.height); trace ("panelTest.width =" + panelTest.width); trace ("panelTest.height =" + panelTest.la taille); } Le résultat reste le même – ohm