2016-06-30 13 views
-1

Wie können die Objekte sich gegenseitig erkennen, ohne dass sie so genau sein müssen? Derzeit erlaubt das Programm, an dem ich arbeite, nur, dass die Elemente übereinstimmen, wenn es am oberen linken Rand genau übereinstimmt, aber ich habe hitTestPoint nicht verwendet, ich habe hitTestObject verwendet. Unten sind meine Codes.hitTestObject funktioniert nicht richtig AS3

if (bin1.hitTestObject(item)){ 
     updateShape(item, bin1); 
+0

was meinst du "ohne so genau zu sein?" –

+0

da es nur das andere Objekt erkennen kann, wenn es die obere linke Kante berührt, kann es nicht erkennen, wenn es an einen anderen Ort gezogen wird. – CHIGGAJX

+0

Mögliches Duplikat von [Bitmap hittesting in AS3] (http://stackoverflow.com/questions/13046930/bitmap-hittesting-in-as3) –

Antwort

1

Wenn bin1 und item beide Displayobjects sind, die ich sehe nicht, wie sie nicht sein könnte (Display ist eine Basisklasse, die von einer Reihe von anderen wie MovieClip- und Sprite erweitert wird), dann sollten Sie in der Lage sein, um selbst ein wenig schnell und schmutzig Berechnung zu machen. Die Art und Weise, wie Sie Ihre Frage formulierten, ließ mich glauben, dass bin1 und item ihren Ursprung in der oberen linken Ecke haben. Sie sollten diesen Code verwenden können, um zu sehen, ob die vollständigen Rechtecke, die beide bewohnen, nicht alle sind dass genau, wenn die Objekte gedreht werden, aber es klingt wie das ist fast, was Sie suchen:

if(Math.abs((bin1.x+bin1.width/2)-(item.x+item.width.2)) < bin1.width/2 + item.width/2 && 
    Math.abs((bin1.y+bin1.height/2)-(item.y+item.height/2)) < bin1.height/2 + item.height/2) 
     updateShape(item,bin1); 

wenn ihre Herkunft nicht tatsächlich in der oberen linken und zentriert sind, entfernen Sie die alle .width/2 und .height/2 Teile mit den Teilen .x und .y in den Klammern. Hoffentlich hilft das!