เดือนช่วงดวงเด่นฟ้า ดาดาว

เริ่มโพสต์โดย thaPIXIE, 01 ส.ค. 2007, 02:14 น.

0 สมาชิก และ 1 บุคคลทั่วไป กำลังเปิดอ่านโพสต์นี้

thaPIXIE

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 ค่าขึ้นมาแล้วบวกองศาเพิ่มไปเรื่อยๆเอาเหมือนกัน


iannnnn

จรูญจรัสรัศมีพราว พร่างพร้อย :25:+
(เพิ่งอ่านจบตะกี้เลย)

蓝月 (lán yuè)

 :25: :25: :25: :25: :25: :25: :25: อร๊ายยยยย ชอบบบบบบบบบบบบบบบบบบบบ
ที่สุดถ้ามันจะไม่คุ้ม
แต่มันก็ดีที่อย่างน้อยได้จดจำ
ว่าครั้งนึงเคยก้าวไป...

จักรี

มีใครขอให้แปะโค้ดไปรึยัง 


งั้นผมขอ
ล้ำลึกคนึงหาในดวงจิต ใจเคยคิดตัดสวาทมิอาจสิ้น
ดั่งก้านบัวหักกลางชลาสินธุ์ ผิว่าสิ้นไร้เยื่อยังเหลือใย

WuTtY

ขออนุญาติเอา 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:
Today you , Tomorrow me.

Ah!

        AH_LuGDeK, AH_LuGDeK_R

จั๊วจ่ะ :)

 :25: พี่เป็นร้านกาแฟใช่มั้ยคะ
there are no regrets in life, just lessons . .

heart

มันเกิดจากว่าพี่เค้าเขียนแรนดอมความเร็ว

แต่ดาวดวงนั้นมัดหยุดเพราะมัรนแรนดอมความเร็วได้ใกล้เคียง หรือเท่ากับ 0

thaPIXIE

หวาวว... wutty OOP นี่นา... :26: เจ๋งแฮะ :12:

WuTtY

เป็นลูกครึ่ง oo กับ function ครับ  :33: :33:

ชอบ function ใน flash มาก ๆ ๆ ครับ มันเป็น pointer หมดเลย เลยเขียนแบบ
mc.onEnterFrame = animation; แบบนี้ได้ แถมไม่ใช้ delete mc.onEnterFrame ได้อีกต่างหาก  :12: :12:

แต่มันไม่ค่อยถูกหลัก oo เท่าไหร่นะ แต่ชอบบบบบบบ  :02: :02:

i-poon

สวยชะมัด !!

มีวิธีทำให้มันโต้ตอบกับ mouse ได้ไหมครับ แบบว่าเอา mouse ชนแรงๆ ดาวก็กระเด็นไปแรงๆ แบบนี้อ๊ะ
50 levels avaliable, 22 secrets levels avaliable :P

WuTtY

#13
ไม่ค่อยเข้าใจว่าชนแรง ๆ แบบไหนน่ะ

เอาเป็นลากแรง ๆ แล้วกัน

เพิ่ม 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:

นายโอ้เอ้

Today you , Tomorrow me.

SMF 2.1.7 © 2026, Simple Machines