อนุบาลงาน ActionSctipt

เริ่มโพสต์โดย ej_sing, 10 พ.ย. 2007, 00:44 น.

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

จักรี

 :17:


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

เกดลดา

ฮ่าๆๆๆ................ :33:







ชักจะยากแล้ว :44: แต่ขอบคุณนะคะ +
กินทุกอย่างยกเว้นต้นหอมค่ะ

iannnnn

+เหมือนกันครับ ชักยากแล้วจริงๆ ด้วย :44:

ej_sing

#48
ต่อ....จากอันบนนั้นที่ไม่มีใครสนใจ :34:
เฉลย ในแบบผมเอง ด้วยสมองน้อยๆคิดแบบง่ายๆ

เพราะี้จำไม่ได้หรอก ว่า mc อันไหนสร้างก่อนหลัง mc อันไหนอยู่ลำดับที่เท่าไร ใช่ไหมจ๊ะ
ผมจึงตั้งค่าแรกของลำดับชั้นไว้ เอาสูงกว่าทุกตัวเยอะๆหน่อยก็ได้ เอาไว้อ้างอิงไง

จากตรงนี้ ถ้าใครเผลอมาอ่าน ลองคิดตามช้าๆด้วย

สมมุติว่า ให้
อ้างอิงn = 1 //ใส่สคริปที่เฟรมหลักเลย

ตอนนี้ n เป็นค่าลอยๆที่ mc ทุกตัวต้องหยิบเอามาใช้อ้างอิง depth เพื่อสั่งลำดับชั้นตัวเอง
คือจัดลำดับชั้นกันใหม่เริ่มจากค่านี้เลย

โดยให้ mc ตัวไหนก็ตาม swapDepth() ด้วยค่า n และใหบวกเพิ่มขึ้น 1

และลำดับชั้นของตัวแรกที่กด ก็คือ 2 เพราะเราบวกค่า n เพิ่มขึ้น 1 แน่นอนสูงสุดๆเลย ห่างจากลำดับล่างๆเป็นหมื่นชั้น
ตอนนี้  n กลายเป็น 2 แล้วนะจ๊ะ เพราะเรา บวก 1 ไปแล้ว


พอตัวที่สองกดปั๊ปก็ swapDepth() ด้วยค่า n อีกและให้บวกเพิ่มขึ้น 1 ค่า
ซึ่งลำดับชั้นของตัวที่สองที่กด ก็คือ 3 สูงกว่าเมื่อกี้อีก 1
ตอนนี้  n กลายเป็น 3 แล้วนะจ๊ะ เพราะเรา บวกเพิ่มอีก 1


.... 4
.. 5
. 6

มันก็จะเพิ่มค่า n เรื่อยๆโดยไม่มีการซ้ำกันของลำดับชั้นในแต่ละ mc ครับ

งงไหมครับ  :22: ไม่งงนะ

ทีนี้มาดูสคริปกัน

จากอันที่แล้ว เราจะเพิ่ม swapDepths() กันล่ะ

อ้างอิงon(press){    //เมื่อเอาเม้าส์มากดปุ่มนี้
      startDrag(this);           //ให้้เกาะติดเม้าส > this คือตัวเอง - แปลได้ว่า "ให้ตัวเองเกาะติดเม้าส์"   
     this.swapDepths(_root.n+1);                            //   เซ็ทลำดับชั้นของตัวเองด้วยค่า n อีกและให้บวกเพิ่มขึ้น 1 ค่า                   
}
on(release){
   //เมื่อปล่อยปุ่ม
       stopDrag();           //"ให้ตัวเองเลิกเกาะติด"
}

เอาสคริปนี้ใส่ใน mc ทั้งห้าตัว ก็จะได้ตามตัวอย่างนี้แล้วครับ  :22:
// อันนี้ผมทำให้เห็นลำดับชั้นของแต่ละตัวด้วยครับ และใช้ฟังชั่นง่ายๆเอาครับ
จริงๆแล้วเริ่มลำดับที่ -16000 ก็ไ้ด้ครับ จะเห็นว่าค่าแรกเริ่มมันก็ -163xx โน่นแน่ะ  :08:

http://img2.f0nt.com/flash/29d916d550236c0f3db8eb194c713dfe.swf

หวังว่าคงเข้าใจกันบ้างนะครับ
หากไม่เข้าใจ :05: ลองค่อยๆอ่านนะครับ จริงง่ายๆครับ แต่ตัวหนังสือเยอะไปนิดนึง ไม่รู้จะพิมพ์ทำไมเยอะแยะ

เกดลดา

ขอบคุณค่ะกำลังทำความเข้าใจอยู่ คือสมมุติ เรามีสี่เหลี่ยม 5 อัน (ในที่นี้เรียกว่า mc รึเปล่า แหะๆ)
ก็เอาสคริปที่พี่สอนในกล่องนั่น ใส่ลงไปกับทุกสี่เหลี่ยมเลยใช่มั้ยคะ โดยค่า n+1 เหมือนกันทุกอันเลยใช่มั้ยคะ


เข้าใจถูกมั๊ยน๊า  :44:
กินทุกอย่างยกเว้นต้นหอมค่ะ

ej_sing

อ้างคำพูดจาก: น้องเกดลดาค่ะ เมื่อ 13 ธ.ค. 2007, 02:23 น.
ขอบคุณค่ะกำลังทำความเข้าใจอยู่ คือสมมุติ เรามีสี่เหลี่ยม 5 อัน (ในที่นี้เรียกว่า mc รึเปล่า แหะๆ)
ก็เอาสคริปที่พี่สอนในกล่องนั่น ใส่ลงไปกับทุกสี่เหลี่ยมเลยใช่มั้ยคะ โดยค่า n+1 เหมือนกันทุกอันเลยใช่มั้ยคะ


เข้าใจถูกมั๊ยน๊า  :44:

จะถูกก็ว่าถูกครับ
สี่เหลี่ยมพวกนั้นนั่น ให้ทำเป็น movieClip ก่อนครับ เรียกย่อๆว่า mc

และเข้าใจตรง n+1 ไหมครับ
อธิบายไม่ค่อยเก่งซะด้วย :44:

จักรี

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

เกดลดา

กินทุกอย่างยกเว้นต้นหอมค่ะ

iannnnn

:46: เข้าใจมากเลยครับน้าแอ๊ด+



จริงๆ แล้วเหมือนสอนข้ามขั้นไปหลายสเต็ปเลยนะ :30:
น่าจะกลับมาเรื่องตัวแปรง่ายๆ ก่อน :44: เช่น บวกเลขอะไรงี้

Buob Marley

กรอบของเกดอยู่ไหนครับ :37:
http://img3.f0nt.com/flash/66d37d0393ee1ab1e2e55182dfabf34e.swf

A Long Patience: Wish Us Luck (and Happy Anniversary)

เกดลดา

นั่นสิ ดูโล๊งโล่งฮ่าๆๆๆ
กินทุกอย่างยกเว้นต้นหอมค่ะ

ej_sing

อ้างคำพูดจาก: น้องเกดลดาค่ะ เมื่อ 13 ธ.ค. 2007, 03:22 น.
ส่งค่ะ :07:



http://img2.f0nt.com/flash/f5830530ef2b408a4f59dbeac3616f32.swf



:05: ดีใจ มีคนส่ง
ทำถูกต้องแล้วครับ

แต่ประเด็นคือหลักการครับ ว่าเข้าใจกันมากน้อยแค่ไหน
อันนี้มีสคริปให้ง่ายหน่อย แต่อันต่อๆไปจะมีแต่ตัวอย่างงาน และตัวอย่างคร่าวๆเท่านั้น
อ้างคำพูดจาก: น้องไอ้แอน เมื่อ 13 ธ.ค. 2007, 03:25 น.
:46: เข้าใจมากเลยครับน้าแอ๊ด+



จริงๆ แล้วเหมือนสอนข้ามขั้นไปหลายสเต็ปเลยนะ :30:
น่าจะกลับมาเรื่องตัวแปรง่ายๆ ก่อน :44: เช่น บวกเลขอะไรงี้

ใช่ครับ ข้ามไปนิสนึง  :30:  เดี๋ยววกกลับเรื่องอนุบาลสคริปแล้วกัน

ej_sing

เบิ้ลเลย

ย้อนกลับมาเรื่องเบื้องต้นกันหน่อยนะ

ถ้าเราจะเขียนสคริปต่างๆสิ่งนึงที่ ทุกภาษาสคริปจะขาดไม่ได้เลยคือ การ output เพื่อดูผลลัพธ์  :22:
ในแฟลชคือการใช้ trace() function
อ้างอิง
trace(expression:Object)

You can use Flash Debug Player to capture output from the trace() function and display the result. If any argument in a trace statement includes a data type other than a String, the trace function invokes the associated toString() method for that data type. For example, if the argument is a Boolean value the trace function invokes Boolean.toString() and displays the return value.

ตามนั้นเลย แต่ output ตัวนี้จะแสดงผลออกมาที่ส่วนหน้า output ของโปรแกรมแฟลชเท่านั้น
หากนำมาเล่นบน flash player หรือ บนหน้าเวบ หรือ publish ออกมาเล่นแบบ .exe
ส่วนของ trace() นี้จะไม่แสดงผล และไม่มีความหมาย

ตัวอย่างการใช้ trace()

- เปิดงานมาหนึ่งงาน
- คลิกที่เฟรมแรก
- กด F9 เพื่อเปิด panel Actionscript เราจะใส่สคริปที่เฟรมกัน
- พิมพ์ว่า...
อ้างอิงtrace("hello F0NT");
- กด Ctrl+Enter เพื่อทดสอบ แล้วดูผล ก็จะเป็นเช่นนี้แล มันจะแสดงผลออกมาที่ส่วนหน้า output ของโปรแกรม



ใส่สคริปที่เฟรมแรก เมื่อทดสอบเปิดงานปั๊ป มันก็จะรันคำสั่งตามที่เราเขียนเลย

output เพื่อ อะไร .........

ก็ เพื่อเอาไว้ทดสอบตัวแปรต่างๆ การส่งค่่า เช็คว่าไอ้ตัวแปรนั้นน่ะ มาจากไหนมีค่าเท่าไร ฯลฯ สารพัด
ต่อไปจะใช้งานมันบ่อยเลยล่ะ หากอยากเขียนสคริปให้งานเรา Interavtive แบบแนวๆ


- อันนี้ตัวช่วยเบื้องต้นที่ควรใช้บ่อยๆ





==========================================================

มาถึงเรื่องการแทนค่า การประกาศตัวแปร

ตัวอย่าง

อ้างอิงvar test_txt:String = "hello F0NT"; //อธิบายว่า "ประกาศให้ test_txt เป็นตัวแปรประเภทตัวหนังสือ มีค่าเท่ากับ "hello F0NT"
//หรือ
test_txt = "hello F0NT";  // กรณีนี้ เราไม่ได้ประกาศว่า test_txt เป็นตัวแปรประเภทอะไร แต่ flash จะสร้างให้เองเมื่อเราแทนค่าใส่เข้าไป
ที่นี้ ตัวแปร test_txt จะเป็น String เพราะเราใส่ค่าให้มันเป็นตัวหนังสือ

สองตัวอย่างเขียนแตกต่าง แต่ผลลัพธ์เหมือนกัน
ความต่างอยู่ตรงที่...... :08: .....ลืมไปแล้ว แต่เป็นเรื่องที่สำคัญระดับหนึ่ง ติดไว้ก่อนไม่อยากมั่วมาก

ทดสอบดูได้เลยโดย
อ้างอิงvar test_txt_1:String = "hello F0NT";
test_txt_2 = "hello F0NT";

trace(test_txt_1);
trace(test_txt_2);


// output ออกมาว่า
อ้างอิงhello F0NT
hello F0NT

ทีนี้เราจะผสมเอาตัวหนังสือกับตัวแปรมาต่อกันใน trace() แล้วแสดงผล
ด้วยการใช้ "+" เป็นตัวรวมเข้าด้วยกัน

อ้างอิงvar test_txt_1:String = "hello F0NT";
test_txt_2 = "hello F0NT";

trace("test_txt_1 is "+test_txt_1);
trace("test_txt_2 is "+test_txt_2);


// output ออกมาว่า
อ้างอิงtest_txt_1 is hello F0NT
test_txt_2 is hello F0NT

เข้าใจแล้วใช่ไหมครับ เดาเอาว่าเข้าใจ  :05:

อีกนิดนึงว่า การทำงานของสคริปจะทำงานเริ่มที่บรรทัดแรกและไปสุดจบที่บรรทัดสุดท้ายเสมอ
ทดสอบง่ายโดยเขียนลำดับใหม่

อ้างอิงvar test_txt_1:String = "hello F0NT";
trace("test_txt_1 is "+test_txt_1);
trace("test_txt_2 is "+test_txt_2);
test_txt_2 = "hello F0NT";


// output ออกมาว่า
อ้างอิงtest_txt_1 is hello F0NT
test_txt_2 is undefined

จะเห็นว่าตัวแรก output ออกมาตรงตามต้องการ
แต่ตัวที่สอง เราเสือก ให้มัน output ก่อนประกาศตัวแปร
ผลก็เลย undefined ครับ

อ้างอิง
undefinedly = [ADV] อย่างไม่มีคำบรรยาย, Related: อย่างไม่แน่ชัด, อย่างคลุมเครือ, Ant. definably

คือประมาณว่า ไม่มีค่าใดๆอยู่

ทีนี้ลองทดสอบบวกเลขง่ายๆดู ด้วยเครื่องหมาย " + - * / "

อ้างอิงtrace(20+50);
trace(90/2);
trace(15*4);
trace((20*5)/2);


iannnnn


ยุนเอ



ลุงแอ๊ดครับ ที่ว่า trace ไม่แสดงผลที่อื่นเนี้ย

แต่มันรันด้วยรึเปล่าครับ ประมาณว่ากิน cpu เราไปด้วยใช่มั้ยครับผม  :46:
เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย

SMF 2.1.7 © 2026, Simple Machines