2016-04-28 7 views
0

Ok Ich brauche Hilfe, um herauszufinden, wie man es macht, wenn der Stuntman mit dem Reifen kollidiert, fügt einen Punkt hinzu, aber stattdessen erkennt er die Kollision mehrmals und fügt 5 Punkte hinzu. Danke für die Hilfe. Dies ist mein Code:Flash Hit Testobjekt as3

stop(); 

// Variables to increase money 

var totalmoney = 0; 

var moneygain:int = 1; 

var moneylimit:int = 100000; 


//on collision with hoop add 1 point to money 

addEventListener(Event.ENTER_FRAME, HoopCollision); 

function HoopCollision(event:Event):void 
{ 
    if(startstuntman.hitTestObject(starthoop)) 
    { 
    totalmoney += moneygain; 
    } 
    Total.text = totalmoney; 
    trace("HIT"); 
} 
+0

beim ersten Treffer würde ich ein Flag setzen, um keinen weiteren Treffer für x Sekunden oder Millisekunden zuzulassen und dann ein Timeout, das dieses Flag zurücksetzt. Sie würden dann für den Treffer && testen, wenn das Flag wahr ist. – Ronnie

+0

Eine andere Option ist es, startstuntman nach dem Treffer zu verschieben, wenn Ihr Code dies zulässt. –

+0

Können Sie erklären, mit was Sie Schwierigkeiten haben? Wenn alles, was Sie wollten, 'totalmoney + = 5 'war, können Sie einfach' var moneygain: int = 1' in 'var moneygain: int = 5' ändern. Ich muss deine Frage missverstehen, um zu glauben, dass so etwas das Problem sein könnte. – Atriace

Antwort

0

Beste, was zu dynamisch Attribute hinzufügen zu tun ist, durch Zusatz:

stop(); 

var totalmoney = 0; 

var moneygain:int = 1; 

var moneylimit:int = 100000; 

starthoop["hit"] = new Boolean(false); // *** initial is not hit by startstuntman *** 


addEventListener(Event.ENTER_FRAME, HoopCollision); 

function HoopCollision(event:Event):void 
{ 
    if(startstuntman.hitTestObject(starthoop) && starthoop.hit == false) // *** checking additional expression *** 
    { 
    totalmoney += moneygain; 
    starthoop.hit = true; // *** starthoop is now hit, so next time it checks, it wont increase totalmoney because of additional expression*** 
    } 
    Total.text = totalmoney; 
    trace("HIT"); 
} 

Ich hoffe, das hilft, Prost! Alexander.

+0

Vielen Dank für die Hilfe, aber ich weiß nicht, ob der Code geschrieben wird, um sich mehrmals zu wiederholen, aber ich brauche meinen Code jedes Mal zu wiederholen. Wenn ich dich verwirrt habe, tut es mir leid, dass ich versuchen werde, es auszuarbeiten. Ich habe diesen Code, der an einem Bewegungs-Tween arbeitet, das sich wiederholt, was ich es tun möchte ist, dass, wenn das Bewegungs-Tween mit dem Reifen kollidiert, ich will, dass es die Kollision einmal jedes Mal erkennt, wenn es durch den Reifen geht. Obwohl dieser Code hilfreich ist, wird der Code nicht jedes Mal wiederholt. Wenn es hilft, geht mein Code zu Frame 32. Danke. – User35