การใช้ฟังก์ชั่นหากินสำหรับสร้างเกมจากFlash hitTestObject, hitTestPoint และ realHitTest by

30
Apr
0

ฟังก๋ชั่น hitTestObject และ hitTestPoint เป็นฟังก์ชั่นที่ค่อยข้าต้องใช้บ่อยมากในการเขียนเกมด้วย Flex เนื่องจากทั้งสองฟังก์ชั่นจะทำการตรวจเช็คว่าอยู่ทับกันหรือไม่ จึงใช้ในการชนกันต่างๆหรือเช็คความถูกต้องของตำแหน่งต่างๆอีกด้วย

◘ ฟังก์ชั่น hitTestObject
เป็นฟังก์ชั่นที่ค่อนข้างใช้บ่อย เพราะใช้งานง่ายที่สุด ใช้ระหว่าง 2 DisplayObject โค้ดเป็นดังนี้

สมมุติ a และ b เป็น movieClip
a.hitTestObject(b); //ถ้า a กับ b ทับกันก็จะได้ true
work1

◘ ฟังก์ชั่น hitTestPoint
เป็นฟังก์ชั่นที่ใช้บ่อยเมื่อเช็ควัตถุกับเมาส์ เพราะใช้ระหว่าง Point (x,y) และ DisplayObject โค้ดเป็นดังนี้

สมมุติ a เป็น movieClip
a.hitTestPoint(mouseX,mouseY); //เช็คว่าเมาส์อยู่ทับวัตถุ a หรือไม่
work2

◘ *แถม* ฟังก์ชั่น 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 มาให้ครับ

a.realHitTest(mouseX,mouseY) เป็น false ในขณะที่ฟังก์ชั่นอื่นเป็น true

จากภาพกรอบสี่เหลี่ยมคือพื้นที่จริงของวัตถุ ฉะนั้นเมื่อใช้ 2 ฟังก์ชั่นแรกจะ return true เพราะไม่สนใจ alpha แต่ถ้าใช้ realHitTest จะ return false มาให้ครับ

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน