เพื่อจะได้ทดลองอะไรง่ายๆ มาทำปุ่มกันก่อนดีกว่าคับ
จริงๆคิดว่าหลายคนทำปุ่มเป็นแล้ว... เพราะเห็นทำปุ่ม Replay กันทุกคนเลย
แต่มาดูปุ่มที่พลิกแพลงตะแคงเดินอีกนิดนึง จะได้เข้าใจต่อไปในภายภาคหน้า
ผมเข้าใจว่าส่วนใหญ่จะใช้การกำหนด "กดปุ่ม" กันแบบเก่า
ซึ่งสะดวกดี ไม่ผิดอะไร บางทีผมเองก็ใช้
นั่นคือ การสร้างปุ่มขึ้นมา แล้วก็ คลิกที่ปุ่ม แล้วพิมพ์
อ้างอิงon(release) {
gotoAndPlay(1);
}
เป็นต้น
ตัว on นี่เราเรียกว่า
Event Handler .... คือ เป็นตัวที่คอยดัก Event หรือเหตุการณ์ต่างๆ ที่พึงเกิดขึ้นได้
ในที่นี้เหตุการณ์ที่บอกให้มันดักไว้คือ
release ... ซึ่งหมายถึง ถ้าเมื่อไหร่ที่มีการปล่อยนิ้วจากการคลิกที่ปุ่มนี้ ให้ทำ คำสั่ง ภายใน { }
ทีนี้ถ้าสมมุติคุณมีปุ่มเยอะๆ แล้วต้องการเปลี่ยนคำสั่งข้างในทีหลังทุกปุ่ม คุณก็ต้องไล่ไปเลือกทีละปุ่ม เพื่อเปิดหน้าต่าง AS แล้วไล่ แก้ไปทีละตัว... เมื่อยตุ้ม :41:
ตั้งแต่ Flash MX ขึ้นไป ได้มีการกำหนดโครงสร้างแบบใหม่ให้กับ Flash ในการจัดการกับ
Event Handler โดยแทนที่จะไปฝาก code ไว้กับปุ่ม แต่ละตัวๆ ... เค้าให้สามารถไปฝากแปะไว้ที่ Timeline ได้หมดเลย... ดังนั้นถ้ามีปุ่ม 10 ปุ่ม แทนที่จะไปควานหา ทุกๆ ปุ่ม ก็สามารถดูได้จากที่เดียวตรง เฟรมที่เขียน code ไว้ทั้ง 10 ปุ่ม
โดยโครงสร้างใหม่จะมีรูปแบบ ดังนี้
อ้างอิงชื่อinstance.onRelease = function () {
คำสั่ง;
}
แต่แทนที่จะใส่ code นี้ที่ ปุ่ม แบบเดิม ให้ไปใส่ที่ Timeline ณ เฟรมแรก ได้เลย
แต่อย่าลืมว่า ตอนนี้คุณต้องระบุ
ชื่อ instance ให้กับปุ่มด้วยแล้ว ไม่งั้นจะไม่รู้ว่าอ้างอิงไปที่ปุ่มไหน
(http://img.f0nt.com/image/4062.jpeg)
ตัวอย่าง
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9091
ยอด
เยี่ยม
(จริงๆต้องเขียนว่าง่าวเน้อเจ้า :21:)
Traceเพื่อให้ทดสอบเองได้ว่ามีอะไรเกิดขึ้นกับปุ่ม ขอแนะนำ trace
trace เป็นคำสั่งสำหรับ debug ดังนั้นจะไม่มีผลอะไรเมื่อดูบน ie หรือ flash player
มันจะมีการแสดงผลก็ต่อเมื่อทดสอบใน Flash ตัว Editor เท่านั้น
ภาษาคอมฯ ส่วนใหญ่จะมีคำสั่งพวกนี้ไว้เพื่อให้สามารถ debug code ของเราได้
รูปแบบ
อ้างอิงtrace("ข้อความ");
ดังนั้นเอามาทดสอบกับปุ่มได้โดยการใส่ไปว่า
อ้างอิงbutt.onRelease = function () {
trace("Hello World");
}
แล้วลอง Ctrl + Enter แล้วก็ลองกดปุ่มดู
ถ้ามีหน้าต่างเล็กๆเปิดขึ้นมาพร้อมกับข้อความว่า Hello World ทุกครั้งที่กดปุ่ม
แปลว่าสำเร็จแล้ว... ยัตต้า!
ปล. ในที่นี้ต้องตั้ง "
ชื่อinstance" ให้กับปุ่มนั้นว่า butt (แปลว่าตูด)
ยัตต้า :25:
แต่ถ้าใช้ Trace อย่างเดียว ก็เอาไปอวดใครไม่ได้ เพราะดูได้แต่บน Editor
ดังนั้นขอแนะนำ
Dynamic Text Fieldแทนที่จะใช้ trace เพื่อแสดงข้อความ เราก็มาเปลี่ยนให้แสดงที่ text field กันแทน
โดยอย่าลืมตั้งชื่อให้กับ text field ด้วย... เพราะในที่นี้จะยกตัวอย่างการอ้างอิงไปที่ text field แบบ instance
(http://img.f0nt.com/image/4063.jpeg)
โดยกำหนด โค้ดไว้ที่ เฟรมแรก ที่เดิมว่า
อ้างอิงbutt.onRelease = function () {
showTxt.text="ข้อความ";
}
ในที่นี้กำหนดชื่อให้ปุ่มว่า
butt และกำหนดชื่อให้ text field ว่า
showTxtการอ้างอิงไปที่ส่วนแสดงผลของ text Field ให้ใช้
.text ต่อท้ายชื่อ text field นั้น
การบ้าน (เห็นคนแถวนี้เค้าชอบทำการบ้านกัน เลยเอาบ้าง)
ลองทำปุ่ม 2 ปุ่มขึ้นไป โดยที่ให้มี text field 1 อันเหมือนเดิม
แต่ว่าการกดแต่ละปุ่ม จะแสดงข้อความต่างกัน
:25: :25: :25: :25: :25: :25:
ลุงท็อปใช้ ฟ MX เหรอครับ
คาดว่าอาจจะมีเหตุผลบางอย่างที่ไม่ใช้ 8
- ขี้เกียจโดนจับ หรือ
- มันไม่ดียังไง
ป.ล.อธิบายได้ละเอียดดีมากสุดยอดโคตรแจ๋วมิ้มๆ เลยครับ :12:
อ้างคำพูดจาก: iannnnn เมื่อ 01 พ.ค. 2006, 02:18 น.
ลุงท็อปใช้ ฟ MX เหรอครับ
คาดว่าอาจจะมีเหตุผลบางอย่างที่ไม่ใช้ 8
- ขี้เกียจโดนจับ หรือ
- มันไม่ดียังไง
ป.ล.อธิบายได้ละเอียดดีมากสุดยอดโคตรแจ๋วมิ้มๆ เลยครับ :12:
- ถ้าจะโดนจับ ใช้ตัวไหนก็โดนจับคับ :33:
- ที่ใช้ MX เพราะผมยังไม่ได้โหลด Flash 8
จบข่าว
ส่งครับ :22:
// แก้ไขนิด อันแรกมันเฉยๆไปหน่อย
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9093
ผมขอไม่ส่งนะครับจานลุง :05:
เพราะว่า Photoshop CS2 ตัวเดียวกะแรม 256 ที่เปิดงานตอนนี้
เครื่องมันก็ร้องโอดโอยด้วยความทรมานแล้ว
(เส้นตายปิดงานตอนตีสาม - เวลาในไทย :44: )
http://img234.imageshack.us/img234/7245/jw6xp.swf
แวะมาดู
อ้างคำพูดจาก: iannnnn เมื่อ 01 พ.ค. 2006, 02:29 น.
(เส้นตายปิดงานตอนตีสาม - เวลาในไทย :44: )
(http://f0nt.com/forum/index.php?action=dlattach;id=9094;type=avatar)<--- แต่มีเวลาวาดพระ มีคิ้ว :34:
อัปโหลดของอยู่ก๊าบ :05:
ป.ล.สีดำไม่ใช่คิ้วนะ
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9097
:08:
//แก้แล้วครับ ไปติ๊ก attach ออกซะงั้น :08:
^
ไม่เห็นมันขึ้นอะไรเลยอ่ะ
อ้างคำพูดจาก: Saa3 เมื่อ 01 พ.ค. 2006, 02:59 น.
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9097
:08:
ไอ้ตัวสีเหลืองข้างล่างนั่นพูดว่าอะไรรึ
ตั้งใจทำซะดิบดี ดันมาตกม้าตาย
:08:
ท่านอาจารย์ :25:
อืม
button1.onRelease = function() {
dtext.text = "นี่ปุ่ม";
};
button2.onRelease = function() {
dtext.text = "นี่ก็ปุ่ม";
}
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9099
ว่าแต่ช่องคำพูดของบักสามมันเปลี่ยนไปด้วยน่ะ แปะโค้ดให้ดูหน่อยสิ
กดแล้วถอด :04:
เทพ :45: :45: :39:
ผมทำอะไรลงไป :05:
a.onRelease = function(){
balloon.gotoAndPlay("a");
kimuchi.text = "อาห์~*";
}
e.onRelease = function(){
balloon.gotoAndPlay("e");
kimuchi.text = "อีห์~*";
}
i.onRelease = function(){
balloon.gotoAndPlay("i");
kimuchi.text = "อูห์~*";
}
o.onRelease = function(){
balloon.gotoAndPlay("o");
kimuchi.text = "เอห์~*";
}
u.onRelease = function(){
balloon.gotoAndPlay("u");
kimuchi.text = "โอห์~*";
}
เอาใหม่เลียนแบบมั่ง
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9100
button1.onRelease = function() {
dtext.text = "นี่ปุ่ม";
border.gotoAndStop("one");
};
button2.onRelease = function() {
dtext.text = "นี่ก็ปุ่ม";
border.gotoAndStop("two");
}
ปล.ใส่ stop(); เฟรมแรกของ mc border ไว้ด้วย
ส่งบ้างครับ
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9101
b1.onRelease = function() {
kums.text = "อู๊ว~";
};
b2.onRelease = function() {
kums.text = "อ๊าว~";
};
เอ่อ :08:
ความทุเรศไม่ปราณีใคร แม้กระทั่งคนใกล้บวช :39:
เอามั่ง...
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9103
กดแล้วมันผลุบๆ โผล่ๆ ง่ะ :08:
:27: :27: :27: :27:
รังสีม่วงลามมาถึงนี่แล้วเรอะ :08:
เรียนโค้ดหนุกดีแฮะ :42:
นั่นสิ :05:
:42: แหม ป๋าน้อยใจ
ไม่ค่อยม่คนทำส่งเลย
ก็ไม่ได้ลงชื่อเข้าขั้นเรียนกันนี่นา
เดี๋ยวจะทำส่งทีหลังนะคะ
อ้างคำพูดจาก: Saa3 เมื่อ 01 พ.ค. 2006, 14:56 น.
เรียนโค้ดหนุกดีแฮะ :42:
ไม่เหมือนเรียนจู๋โน้น :26:
http://www.thaimeet.com/jaupload/uploadallfile/files/FileUpload/MemberUpload/staywithme/staywithme.butt.swf
มี 2 เซคชั่น
อันแรกนี่ทำตามเค้าไป
one.onRelease = function() {
show.text = "Finedays Flash";
};
two.onRelease = function() {
show.text = "First actionscript";
};
อันต่อมา ลองเอง
อยากรุ้ว่าการกำหนด var ใช้ได้เหมือนกับการตั้งชื่อ instance รึเปล่า
reset.onRelease = function() {
show.text = "";
show2 = ""
name =""
};
bsend.onRelease = function() {
show2 = "I love "+name;
};
ยังไม่ได้ทำอะไร กดแล้วมันขึ้นอย่างนี้เลย
:22:
(http://img.f0nt.com/image/4100.jpeg)
อายนะเนี่ย หมอกิ๊พ
หลายคนพลิกแพลงดีคับ :25:
ชอบที่คนเรียนรู้จักคิดต่อ แล้วก็พลิกแพลงนะ
เคยสอนบางคลาส คนเรียนทำอะไรตามที่สอนหมดเลยแล้วก็หยุดแค่นั้น ก็ไม่รู้ว่าเค้าเข้าใจหรือว่าทำตามไปอย่างนั้น ถ้ามีสักคนเริ่มต่อยอดออกไปจะทำให้คลาสนั้นดูน่าตื่นเต้นขึ้นเยอะเลย
อ้างอิงอันต่อมา ลองเอง
อยากรุ้ว่าการกำหนด var ใช้ได้เหมือนกับการตั้งชื่อ instance รึเปล่า
เป็นการทดลองที่ดีคับ .. จริงๆ ผมไม่พูดถึงกำหนด var ที่ textfield ตั้งแต่ทีแรก
เพราะอยากสังเกตด้วยว่าจะมีใครถามหรือป่าว... เพราะวิธีพื้นฐานเดิมจะใช้ var กัน
อธิบายเพิ่มเติมจากผลที่เห็นว่ามันก็ทำงานได้เหมือนกัน ในความแตกต่างก็มีความเหมือนกันอยู่
การกำหนดค่า var ให้ textfield ก็คือการกำหนดค่าให้ตัวแปรชื่อที่ใส่ลงไปใน var
ส่วนการใช้
textfield.text ในความจริงก็คือการกำหนดค่าให้ตัวแปรเหมือนกัน
แต่เป็นตัวแปรของ object นั้นๆ
ในทาง programming เราเรียก .text ว่า เป็น property ของ object ตัวนั้น
ในที่นี้ object ตัวนั้นก็คือ textfield ที่ระบุชื่อไว้นั่นเอง และโดยมาตรฐานที่กำหนดมา
textfield แต่ละตัวจะมี property หรือตัวแปรที่ชื่อว่า text ที่เชื่อมตรงกับการแสดงผลของ textfield นั้นๆอยู่แล้ว
ในความเหมือนคือ เราก็กำหนดค่าให้กับตัวแปร นั่นเอง เพียงแต่เป็นตัวแปรที่ต่างชื่อ ต่างระดับกันครับ
เพิ่มเติมวิธีการ gotoAndStop แบบที่ Saa3 ใช้นั้น เป็นเทคนิคอย่างนึงที่จะใช้มากในการเขียน code บน flash
เพื่อประโยชน์ของการแสดงผล... เป็นเทคนิคเฉพาะที่จะทำได้ใน Flash เท่านั้น ภาษาอื่นๆ ค่อนข้างจะหมดสิทธิ
ดังนั้นเป็นวิธีที่จะใช้มากในเกือบทุกๆงาน interactive ครับ... เพราะฉะนั้นเก็บไว้ในใจก็จะเป็นประโยชน์มากเลยครับ
รอลุ้นบทต่อไปด้วยใจระทึก :25:
อ้างคำพูดจาก: L เมื่อ 02 พ.ค. 2006, 03:40 น.
รอลุ้นบทต่อไปด้วยใจระทึก :25:
:34: การบ้านก็ไม่ทำ :34:
ทำแล้วๆ อ๊ะ ทำไม่ได้ :44:
ทำไงดี อันเดียวทำได้ครับ แต่สองอัน :44:
ถ้าไม่ได้น่าจะแปะโค้ดนะคับ คนอื่นจะได้ช่วยดูด้วยว่าผิดยังไง
ผมเดาว่าน่าจะผิดอย่างนั้น.. (แบบนั้นแหล่ะ)
เพราะตอนอธิบายผมใช้ปุ่มเดียว แต่เหตุผลที่การบ้านตั้งโจทย์ให้มี 2 ปุ่มขึ้นไป
เพื่อเป็นทริกนิดนึง ดูว่าจะมีใครผิดแบบนั้นหรือป่าว... (แล้วก็มี :42:)
ผมว่า L ผิดแบบนั้นนะ...(แบบนั้นแหล่ะ ลองสังเกตของคนอื่นดู)
ให้ชัวร์ก็ลองแปะโค้ดดูก็ได้คับ
คำถาม: คนอื่นๆ คิดว่า L ผิดตรงไหน ?
ปล. ตอนที่เคยสอนภาษา C เวลามีใครทำผิดแบบที่น่าสนใจ ผมจะให้คนอื่นๆในคลาสมาช่วยดู
เพื่อดูว่าผิดตรงไหน .. ไม่ใช่อยากสอนให้เด็กจับผิด.. แต่เพราะว่าลักษณะการผิดบางอย่าง
เป็นเรื่องปกติที่เกิดขึ้นเสมอในการเขียน code ทำให้คนอื่นเรียนรู้ข้อผิดพลาดลักษณะนั้นไปด้วย
เพราะความผิดพลาดบางอย่าง เกิดจากการไม่ระวัง ทั้งๆที่บางทีไม่ใช่คนทำผิดไม่เข้าใจ (บางทีก็ไม่เข้าใจนั่นแหล่ะถึงผิด)
โอีะ นี่ได้รับเกีรยติ เป็นหนึ่งในควายcase study ด้วย ดีใจจัง :33:
อ่าจะแปะยังไงดี
bt.onRelease = function () {
bt2.text="สวัสดีครับ ";
}
อีกปุ่ม แปะ
bt3.onRelease = function () {
bt2.text="ส่ง Homework เนาะ";
bt ปุ่ม 1
bt2 text field
bt3 ปุ่ม 2
เออเรอ ล๊อค
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Statement must appear within on/onClipEvent handler
bt3.onRelease = function () {
Total ActionScript Errors: 1 Reported Errors: 1
อ่ะ...... :38:
ผิดแบบนี้... ผิดคาดอ่ะคับ :14:
แบบนี้ไม่ใช่แบบที่คิดไว้นี่
นี่ถ้าไม่แถม error log ผมก็งงนะว่าผิดยังไง :41:
จาก error log เดาว่า ไปใส่ bt3 ที่ปุ่ม แทนที่จะใส่ที่เฟรมอ่ะคับ
อ้างอิงbt3.onRelease = function () {
bt2.text="ส่ง Homework เนาะ";
เอาใส่ในเฟรมแล้วก็เติม } เข้าไปด้วยนาครับ :33:
ให้ใส่ที่เฟรมนี่เนาะ
ติดกับแบบเก่า :08:
เด๋วลองแก้ดูครับ ตอนนี้เครื่องไม่มีแฟลช
ปล ปัญหาที่จะเกิดตามที่คุณ x saint เกริน คงเป้นการเปิดปิดสมการ ซ้ำกันใช่เปล่าครับ :09:
อ้างคำพูดจาก: L เมื่อ 02 พ.ค. 2006, 11:09 น.
ปล ปัญหาที่จะเกิดตามที่คุณ x saint เกริน คงเป้นการเปิดปิดสมการ ซ้ำกันใช่เปล่าครับ :09:
ป่าวคับ... ทีแรกผมเข้าใจว่าตั้งชื่อปุ่มซ้ำกัน หรืออ้างอิงชื่อปุ่มซ้ำกัน
เพราะเคยเห็นหลายคนลืมเปลี่ยน... จริงๆผมเองบางทีรีบๆ copy แปะ ก็ลืมเปลี่ยนเหมือนกัน
บทต่อไปเลยครับ :12:
ผมว่าเรียนแบบนี้มันดีกว่า อ่านหนังสือตั้งเยอะเพราะว่า ในหนังสือ follow up อย่างเดียว
แบบนี้มีหน้าแหก โชว ควายcase study :30:
สนุกสนาน แก่การบ้านไม่ทำ :26:
ส่งด้วยคน
http://f0nt.com/forum/index.php?action=dlattach;topic=5828.0;id=9125
อ้างคำพูดจาก: X Saint เมื่อ 02 พ.ค. 2006, 13:09 น.
^
ไมมีปุ่มเดียวอ่ะ :34:
ง่า มีสองปุ่มนะครับจาน หรือผมทำผิดตรงไหน :44:
butt1.onRelease = function(){
gotoAndPlay("grow");
word.text = "Alive thank for your kind";
}
butt2.onRelease = function(){
gotoAndPlay("death");
word.text = "Death it's nothing more";
}
:42:
ขอญาตแก้ของจ๋๐เป็น 400x400 นะครับ จะได้อ่านง่ายๆ
แจ่มคับ ขอขอบคุณมากๆคับ
ขอตามอ่านด้วยคนครับ :42:
:08:
ขอล๊อคสักพักนะ