การใช้ฟังก์ชั่นหากินสำหรับสร้างเกมจากFlash hitTestObject, hitTestPoint และ realHitTest by Ziah
Apr0
ฟังก๋ชั่น hitTestObject และ hitTestPoint เป็นฟังก์ชั่นที่ค่อยข้าต้องใช้บ่อยมากในการเขียนเกมด้วย Flex เนื่องจากทั้งสองฟังก์ชั่นจะทำการตรวจเช็คว่าอยู่ทับกันหรือไม่ จึงใช้ในการชนกันต่างๆหรือเช็คความถูกต้องของตำแหน่งต่างๆอีกด้วย
◘ ฟังก์ชั่น hitTestObject
เป็นฟังก์ชั่นที่ค่อนข้างใช้บ่อย เพราะใช้งานง่ายที่สุด ใช้ระหว่าง 2 DisplayObject โค้ดเป็นดังนี้
สมมุติ a และ b เป็น movieClip
a.hitTestObject(b); //ถ้า a กับ b ทับกันก็จะได้ true
◘ ฟังก์ชั่น hitTestPoint
เป็นฟังก์ชั่นที่ใช้บ่อยเมื่อเช็ควัตถุกับเมาส์ เพราะใช้ระหว่าง Point (x,y) และ DisplayObject โค้ดเป็นดังนี้
สมมุติ a เป็น movieClip
a.hitTestPoint(mouseX,mouseY); //เช็คว่าเมาส์อยู่ทับวัตถุ a หรือไม่
◘ *แถม* ฟังก์ชั่น realHitTest
เนื่องจากทั้งสองฟังก์ชั่นก่อนหน้านี้ จะเช็คโดยไม่คำนึงถึง alpha จึงต้องใช้ฟังก์ชั่นนี้ซึ่งหน้าตาเป็นดังนี้
public function realHitTest(object:DisplayObject, point:Point):Boolean{
if(object is BitmapData)
{
return (object as BitmapData).hitTest(new Point(0,0),0, object.globalToLocal(point));
}
else {
if(!object.hitTestPoint(point.x, point.y, true))
{
return false;
}
else {
var bmapData:BitmapData = new BitmapData(object.width, object.height, true, 0x00000000);
bmapData.draw(object, new Matrix());
var returnVal:Boolean = bmapData.hitTest(new Point(0,0), 0, object.globalToLocal(point));
bmapData.dispose();
return returnVal;
}
}
}
จากภาพกรอบสี่เหลี่ยมคือพื้นที่จริงของวัตถุ ฉะนั้นเมื่อใช้ 2 ฟังก์ชั่นแรกจะ return true เพราะไม่สนใจ alpha แต่ถ้าใช้ realHitTest จะ return false มาให้ครับ
Enjoy this article?
Consider subscribing to our RSS feed!
ไม่มีความเห็น
ยังไม่มีความเห็น