http://img2.f0nt.com/flash/ad2e218b18e0d1f5c1e750107ec681f6.swf
ขอบังอาจเจ้าของสวนขายมะพร้าวห้าวเอามัน... :21:
อธิบายคอนเซ็บต์นะครับ เรื่อง code ถ้ามีเรียกร้องค่อยตามมาแปะ นะนะ...
ตอแรกก็สร้าง mc ที่เป็นดาวขึ้นมา
สั่ง duplicate ด้วย loop for ตามจำนวนดาวที่ต้องการ
ทุกครั้งที่ duplicate ก็กำหนดทิศการเคลื่อนที ่โดยให้มัน random ค่าขึ้นมาแล้วบวกซ้ำๆค่า x และ y ของ mc ดาวแต่ละดวง(ใช้ onEnterFrame ในการสั่งงานซ้ำๆก็ได้)
มีเงื่อนไขตรวจสอบการชนขอบโดยอ้างจาก เมื่อดาวมีตำแหน่งในแกนนอนมากกว่าหรือเท่ากับความกว้างของ stage หรือ ดาวมีตำแหน่งในแกนนอนน้อยกว่าหรือเท่ากับ 0 เป็นการตรวจการชนขอบซ้ายขวา และเมื่อดาวมีตำแหน่งในแกนตั้งน้อยกว่าหรือเท่ากับ 0 หรือดาวมีตำแหน่งในแนวแกนตั้งมากกว่าหรือเท่ากับความสูงของ stage ก็ให้ค่าที่ random มาของแต่ละแกนติดลบเสีย ชนขอบไหนก่อนก็กลับค่าแกนนั้นก่อน
ลองดูครับ หนุกดีนะ ทำได้แล้วยิ้มคนเดียวทั้งวัน ฮื้มมม :40:
ปล.ที่เห็นดาวหมุนได้เพราะผมก็ random ค่าขึ้นมาแล้วบวกองศาเพิ่มไปเรื่อยๆเอาเหมือนกัน
สวยจัง :25:
จรูญจรัสรัศมีพราว พร่างพร้อย :25:+
(เพิ่งอ่านจบตะกี้เลย)
:25: :25: :25: :25: :25: :25: :25: อร๊ายยยยย ชอบบบบบบบบบบบบบบบบบบบบ
มีใครขอให้แปะโค้ดไปรึยัง
งั้นผมขอ
ขออนุญาติเอา code มาแป๊ะ นะครับ พอดีกำลังหัด flash แล้วเลยเอาไปลองเขียนตามดู
mc ที่เป็นรูปดาวผมใช้มันอยู่กลาง mc ของดาวนะครับ เลยใช้ width/2 และ height/2 ทั้งหมดถ้าใครรูปดาวไม่ได้อยู่กลาง mc ต้องคำนวณใหม่เองนะ
function animation() {
this._rotation += this.rotation // หมุนทุกครั้ง ตามองศาที่ set ไว้
if (this._x < (this._width/2) || this._x > Stage.width-(this._width/2) ) {
this.x *= -1; // กำหนดค่า x ใหม่ทุกครั้งที่มีการชนขอบซ้ายและขวา
}
if ( this._y < (this._height/2) || this._y > Stage.height-(this._height/2) ) {
this.y *= -1; // กำหนดค่า y ใหม่ทุกครั้งที่มีการชนขอบบนและล่าง
}
this._x += this.x; // เลื่อนดาวตามสมควร
this._y += this.y;
}
// function กำหนดค่าเริ่มต้นให้ star
function initStar(mc:MovieClip) {
mc.x = randRange(-15, 15); // กำหนดค่าที่จะเลื่อน ยังไม่ได้เลื่อนจริง ๆ นะ
mc.y = randRange(-15, 15);
mc.rotation = randRange(5,10); // กำหนดค่าที่จะหมุน
mc._alpha = randRange(20,100); // กำหนด alpha
mc._xscale = mc._yscale = randRange(20,100); // กำหนดขนาด
mc._x = randRange(0+(mc._width/2), Stage.width-(mc._width/2)); // กำหนดค่าเริ่มต้นที่จะวางใน stage
mc._y = randRange(0+(mc._height/2), Stage.height-(mc._height/2));
mc.onEnterFrame = animation; // กำหนดว่าให้ onEnterFrame ไปทำ function animation
}
// function random ค่า เอามาจากใน help สะดวกดี กำหนด min max ได้เลย
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
// วนลูปสร้างดาว 50 อัน พร้อมทั้งกำหนดค่าเริ่มต้นให้มันด้วย
for(i=1;i<50;i++) {
this.attachMovie("star", "mc"+i, this.getNextHighestDepth()); // mc ที่อยู่ใน library ผมชื่อ star นะครับ
initStar(this["mc"+i]);
}
อ้างคำพูดจาก: thaPIXIE เมื่อ 01 ส.ค. 2007, 02:14 น.
http://img2.f0nt.com/flash/ad2e218b18e0d1f5c1e750107ec681f6.swf
ดาวดวงมุมซ้านบน อยู่นิ่งไม่ขยับไปไหนเลยครับ อย่างนี้เรียก bug ได้มั้ยครับ :43:
เรียกว่า starbug ครับ
:25: พี่เป็นร้านกาแฟใช่มั้ยคะ
มันเกิดจากว่าพี่เค้าเขียนแรนดอมความเร็ว
แต่ดาวดวงนั้นมัดหยุดเพราะมัรนแรนดอมความเร็วได้ใกล้เคียง หรือเท่ากับ 0
หวาวว... wutty OOP นี่นา... :26: เจ๋งแฮะ :12:
เป็นลูกครึ่ง oo กับ function ครับ :33: :33:
ชอบ function ใน flash มาก ๆ ๆ ครับ มันเป็น pointer หมดเลย เลยเขียนแบบ
mc.onEnterFrame = animation; แบบนี้ได้ แถมไม่ใช้ delete mc.onEnterFrame ได้อีกต่างหาก :12: :12:
แต่มันไม่ค่อยถูกหลัก oo เท่าไหร่นะ แต่ชอบบบบบบบ :02: :02:
สวยชะมัด !!
มีวิธีทำให้มันโต้ตอบกับ mouse ได้ไหมครับ แบบว่าเอา mouse ชนแรงๆ ดาวก็กระเด็นไปแรงๆ แบบนี้อ๊ะ
ไม่ค่อยเข้าใจว่าชนแรง ๆ แบบไหนน่ะ
เอาเป็นลากแรง ๆ แล้วกัน
เพิ่ม 2 function
function startMove() {
this.startPointX = this._x;
this.startPointY = this._y;
this.startDrag();
delete this.onEnterFrame;
}
function stopMove() {
this.x = (this._x - this.startPointX)/3; // เปลี่ยนค่า /3 เป็นอื่น ๆ ก็ได้ ถ้าไม่ / มันจะวิ่งไวมาก ๆ
this.y = (this._y - this.startPointY)/3;
this.stopDrag();
this.onEnterFrame = animation;
}
แล้วก็แก้ function initStar เป็นตามนี้
function initStar(mc:MovieClip) {
mc.x = randRange(-15, 15); // กำหนดค่าที่จะเลื่อน ยังไม่ได้เลื่อนจริง ๆ นะ
mc.y = randRange(-15, 15);
mc.rotation = randRange(5,10); // กำหนดค่าที่จะหมุน
mc._alpha = randRange(20,100); // กำหนด alpha
mc._xscale = mc._yscale = randRange(100,100); // กำหนดขนาด
mc._x = randRange(0+(mc._width/2), Stage.width-(mc._width/2)); // กำหนดค่าเริ่มต้นที่จะวางใน stage
mc._y = randRange(0+(mc._height/2), Stage.height-(mc._height/2));
mc.onEnterFrame = animation; // กำหนดว่าให้ onEnterFrame ไปทำ function animation
mc.onPress = startMove;
mc.onRelease = mc.onReleaseOutside = stopMove;
}
// เพิ่ม 2 บรรทัดล่าง ให้กดที่ดาว และ ปล่อยดาว ทำอะไร
ลืมไปนิดนึง
mc._xscale = mc._yscale = randRange(100,100); // กำหนดขนาด
แก้เป็น 20, 100 นะ เมื่อกี้ แก้แ้ล้วลืมแก้กลับ
แบบนี้มันจะไม่ดีอยู่นิดนึงคือถ้าปาแรง ๆ มันจะวิ่งไม่หยุดเลยกดอีกทีลำบากมา :05:
ควรไปแก้้ใน function animation ให้มันวิ่งช้าลงเรื่อย ๆ ด้วย แต่ขี้เกียจทำล่ะ :43: :43:
:25: รวดเร็ว ทันใจ
ผมเปิดไม่ได้แหละ
ขึ้นว่า Unexpect file format ครับ :16:
อันนี้ก็ยังไม่ OO อะพี่โป้ง
OO เพียวเลยต้องสร้างคลาสด้วย อย่าลืมจิ
อันนี้ไม่มีคลาส
งั้นผมเปิดห้องแล้ว ใครจะไปกับผมบ้าง
กรี๊ด :25:
ผมได้ยินคำว่า OOP แล้วนึกถึงพี่เหน่ง Ruby รางรถไฟขานั้นอ่ะ :05:
อ้างคำพูดจาก: heart เมื่อ 01 ส.ค. 2007, 17:18 น.
อันนี้ก็ยังไม่ OO อะพี่โป้ง
OO เพียวเลยต้องสร้างคลาสด้วย อย่าลืมจิ
อันนี้ไม่มีคลาส
:26:
ต้องเฟิร์สคลาสเท่านั้น :11:
สวยมากเลยค่ะ :25:
อ้างคำพูดจาก: จักรี เมื่อ 01 ส.ค. 2007, 17:44 น.
งั้นผมเปิดห้องแล้ว ใครจะไปกับผมบ้าง
สนใจเขาหน่อยครับ :25:
:48: :48: :48: :48: :48:
:11:
oop นี่ไม่เจี้ยมจริงๆนะครับ เป๋กลับให้มันรู้แล้วรู้รอด
:43: :43:
อ้างคำพูดจาก: heart เมื่อ 01 ส.ค. 2007, 14:26 น.
มันเกิดจากว่าพี่เค้าเขียนแรนดอมความเร็ว
แต่ดาวดวงนั้นมัดหยุดเพราะมัรนแรนดอมความเร็วได้ใกล้เคียง หรือเท่ากับ 0
ผมสงสัยว่า ถ้ามันแรนดอม แล้วทำไมมันเป็นทุกๆครั้งเลย อะคับ :46:
ผมว่ามันเป็นตัวต้นฉบับที่เอาไว้ duplicateMovieClip นะครับเลยไม่โดน script สั่งให้วิ่ง ^^"