AC3: Onclick event afhænger af rækkefølgen
HejsaJeg er ved at lave et simpelt spil hvor man skal skyde på en skive og få point. Jeg har lavet skydeskiven og et sigte som følger musen.
Men jeg har det problem at hvis jeg sætter min nye cursor til at ligger over skiven trigger skiven ikke onclick event. Men hvis den ligger under fungerer det fint. Jeg ved godt at det skyldes at man faktisk trigger onclick på krydset, da det følger musen. Men er der nogen nem måde at omgå dette?
Se koden nederst..
Cursor nederst: http://kasperbirk.dk/wp-content/flash/game1.swf
Cursor øverst: http://kasperbirk.dk/wp-content/flash/game2.swf
// + + + IMPORTS + + + //
import flash.events.MouseEvent;
Mouse.hide();
// + + + + + + //
var myMovie:MySymbol = new MySymbol();
// + + + TARGET + + + //
var target0:Target0 = new Target0();
var target1:Target1 = new Target1();
var target2:Target2 = new Target2();
var target3:Target3 = new Target3();
var target4:Target4 = new Target4();
// + + + ADD GRAPHIC + + + //
addChild(myMovie); // <-- CURSOR
addChild(target0);
addChild(target1);
addChild(target2);
addChild(target3);
addChild(target4);
target0.x = 200;
target0.y = 200;
target1.x = 200;
target1.y = 200;
target2.x = 200;
target2.y = 200;
target3.x = 200;
target3.y = 200;
target4.x = 200;
target4.y = 200;
// + + + EVENTS + + + //
stage.addEventListener(MouseEvent.MOUSE_MOVE, setPosition);
target0.addEventListener(MouseEvent.MOUSE_DOWN, shoot);
target1.addEventListener(MouseEvent.MOUSE_DOWN, shoot);
target2.addEventListener(MouseEvent.MOUSE_DOWN, shoot);
target3.addEventListener(MouseEvent.MOUSE_DOWN, shoot);
target4.addEventListener(MouseEvent.MOUSE_DOWN, shoot);
function setPosition(E:Event):void {
// Opdater myMovie's position
Mouse.hide();
myMovie.x = mouseX;
myMovie.y = mouseY;
}
function shoot(E:Event):void {
switch (getQualifiedClassName(E.currentTarget).toString())
{
case "Target0" :
pointLabel.text = '100';
break;
case "Target1" :
pointLabel.text = '200';
break;
case "Target2" :
pointLabel.text = '300';
break;
case "Target3" :
pointLabel.text = '400';
break;
case "Target4" :
pointLabel.text = '500';
break;
}
}