ก่อนอื่นมาเฉลยครับ... ทิ้งไว้นานมาก

โดยครึ่งหลังของการเฉลยจะเป็นเนื้อหาของตอนใหม่นี้ด้วย
เริ่มจากโครงสร้างเดิมในหน้าแรกที่เหมือนจะเข้าใจ และทำได้ทุกคนนะคับ
butt.onRelease = function() {
box.onEnterFrame = function() {
if(ตรวจสอบเงื่อนไขในการเคลื่อนที่เสร็จ) {
เพิ่ม/ลบ ค่าตำแหน่ง (ความกว้าง สูง)
} else {
delete box.onEnterFrame;
}
}
}
ของเดิมเราใช้ i นับ ว่าทำกี่รอบ ทำครบแล้วจึงหยุด
แต่คราวนี้เรามีเงื่อนไขใหม่ คือ มันเดินไปถึงตำแหน่งที่กำหนด (เปลี่ยนขนาดไปถึงขนาดที่กำหนด) แล้วจึงหยุด
ดังนั้น
จึงขอเพิ่มส่วนกำหนดเป้าหมายเข้าไป ก่อนที่จะเริ่ม onEnterFrame นะคับ.. โดยในที่นี้เราจะมี 4 คุณสมบัติ หรือ properties เสมอ เพราะเราจะเปลี่ยนทั้ง x, y, width และ height ซึ่งจะรวมไปถึงในส่วน เพิ่ม/ลบ ตำแหน่งด้วย ก็จะส่งผลให้มี 4 ค่า 4 บรรทัดไปด้วย
ก็จะได้โค้ดออกมาประมาณนี้
butt1.onRelease = function() {
boxA.tWidth=60;
boxA.tHeight=120;
boxA.tX=120;
boxA.tY=50;
boxA.onEnterFrame = function() {
if(ตรวจสอบเงื่อนไขในการเคลื่อนที่เสร็จ) {
this._width+=condW;
this._height+=condH;
this._x+=condX;
this._y+=condY;
} else {
delete box.onEnterFrame;
}
}
}
ตอนนี้ติดอยู่ 2 ส่วน คือ ส่วนเงื่อนไข และ พวก cond ทั้ง 4 ตัว ที่จะเป็นตัวกำหนดว่าจะมีการเปลี่ยนแปลงทีละกี่ pixel
มาดูส่วน cond ทั้ง 4 ตัวก่อน
จากเดิมที่เราทำปุ่มขวา เราใช้ + ปุ่มซ้ายเราใช้ -
กรณีนี้กรอบเราอาจจะวิ่งไปซ้าย หรือ ขวาก็ได้ แล้วแต่ค่าเป้าหมายที่กำหนด เทียบกับตำแหน่งปัจจุบันที่มันอยู่.... ถูกมั๊ยครับ ?
ทำยังไงถึงจะรู้ว่าตำแหน่งปัจจุบัน เลื่อนไปตำแหน่งปลายทาง จะเป็น + หรือ -
ลองใช้ if ดูครับ
if(this._x>this.tX) { return -1;}
else if(this._x<this.tX) { return 1;}
else { return 0;}
แต่ว่าเรามี 4 ค่า ก็ต้องเปรียบเทียบทั้ง 4 ค่าสิ... มันจะทำให้ โค้ดเฉพาะส่วนนี้กลายเป็น 4 x 3 บรรทัดไป ทั้งๆที่ลักษณะโค้ดซ้ำๆกัน