0
Cela m'a vraiment énervé et je n'arrive pas à poser la bonne question en cherchant une solution! Le problème est assez simple: Pourquoi ne puis-je pas attacher un événement à un MovieClip créé par programme dans Actionscript 3? Cela doit être quelque chose de fondamental qui me manque, non?Difficulté à attacher un événement à un MovieClip créé par programme
package {
//imports
import flash.display.*;
import flash.events.*;
//document class
public class Document extends MovieClip {
//variables
public var utilities:Object;
public var test:MovieClip;
//constructor
public function Document()
{
//instantiate the utilities object - this will contain some
//simple functions for setting dimensions and background color of
//a display object.
this.utilities = new Object();
//utility function: set dimensions.
this.utilities.setDimensions = function(what:*, width:uint, height:uint)
{
what.graphics.drawRect(0, 0, width, height);
}
//utility function: set opaque background color.
this.utilities.setBgColor = function(what:DisplayObject, color:uint)
{
what.cacheAsBitmap = true;
what.opaqueBackground = color;
}
//create/add a test movie clip.
test = new MovieClip();
//set dimensions and background color of the test movie clip.
this.utilities.setDimensions(test, 100, 100);
this.utilities.setBgColor(test, 0xff0000);
//add test movie clip to document class.
this.addChild(test);
//add a click event to the test movie clip.
test.addEventListener(MouseEvent.CLICK, onClick);
}
//click event handler
private function onClick(evt:Event):void
{
trace('click');
}
}
}
//update based on Casey Yee's answer
//the set dimension function needs to contain a fill to be clickable
//a fill is added with alpha set to zero to maintain transparency.
//utility function: set dimensions
this.utilities.setDimensions = function(what:*, width:uint, height:uint)
{
what.graphics.beginFill(0x000000, 0);
what.graphics.drawRect(0, 0, width, height);
what.graphics.endFill();
}
Ahhh..I supposait que drawRect a effectivement donné le contenu du clip que le rendement clip d'essai largeur et hauteur et affiche une couleur de fond opaque. Mais il est encore vide sans avoir une sorte de remplissage? Travaillé comme un charme, merci beaucoup. : o) – Michael
@Casey Yee: vous pourriez avoir adopté ses fonctions utilitaires 'setDimensions' et' setBgColor' dans votre solution ;-) – DanielB
@DanielB, oui vous avez raison, je n'ai même pas pensé à vérifier ce que faisaient les fonctions haha! –