2010-06-26 7 views
0

J'ai une boîte rouge appelée mc1_mc et chaque fois que vous faites glisser dessus, vous obtenez une nouvelle petite boîte bleue ajoutée à la scène. L'idée est que vous pouvez aussi faire glisser ces boîtes bleues. Cependant, je ne sais pas comment les détecter.ActionScript 3: comment comparez-vous si l'objet sur lequel vous avez cliqué est ce type d'objet?

Voici le code:

var newBlok:Boolean; 
var blokIndex:int = 0; 
var blokje:blok; 
var huidigBlok:DisplayObject; 
var prullenBak:DisplayObject = getChildByName("groen_mc"); 

stage.addEventListener(MouseEvent.MOUSE_DOWN,pickUp); 
stage.addEventListener(MouseEvent.MOUSE_UP,dropIt); 

function pickUp(event:MouseEvent):void 
{ 
    trace(event.currentTarget); 
    trace(event.target); 
    trace(event.target.name); 

    if (event.target.name == "mc1_mc") 
    { 
     trace("hoi"); 

     blokje = new blok; 
     blokje.name = "blokje" + blokIndex; 
     blokIndex++; 

     addChild(blokje); 
     blokje.startDrag(true); 

    } 

    if (event.target.type == blok) 
    { 
     trace("blok"); 
    } 

    //blokjeVast = blokje; 
} 

function dropIt(event:MouseEvent):void 
{ 
    event.target.stopDrag(); 
} 

il vient wont jamais à la ligne: trace ("blok"); même lorsque l'objet i cliqué sur donne:

[object Stage] 
[object blok] 
blokje0 

pour les lignes.

trace(event.currentTarget); 
trace(event.target); 
trace(event.target.name); 

Est-ce que quelqu'un sait comment faire pour vérifier si c'est un objet de type "blok"?

Répondre

1

Pour vérifier si un objet est d'un certain type, vous pouvez utiliser l'opérateur is.

Donc, vous devriez changer ceci:

if (event.target.type == blok) 
{ 
    trace("blok"); 
} 

à ceci:

if(event.target is blok) 
{ 
    trace("blok"); 
} 

Et si la cible est de type blok, vous devriez voir la trace.

Il ya une mise en garde ici. ìs vous indique si un objet est d'un certain type. Comme une classe peut étendre d'autres classes et implémenter des interfaces, vous devriez d'abord chercher la plus dérivée ou la plus spécifique (si vous voulez faire la différence entre, disons, Sprite et MovieClip).

var mc:MovieClip = new MovieClip(); 

if(mc is MovieClip) { 
    trace("is MovieClip"); 
} else if(mc is Sprite) { 
    trace("is Sprite"); 
} 

// even if mc is a MovieClip, your code will never get in the else block 
if(mc is Sprite) { 
    trace("is Sprite"); 
} else if(mc is MovieClip) { 
    trace("is MovieClip"); 
} 
+0

Merci beaucoup, pourquoi faut-il toujours être si simple: S xD – matthy

Questions connexes