อยู่เฉยๆ ก็หลับซะเปล่าๆ นั่งพิมพ์เล่นดีกว่า
ActionScript ต่อไปเราจะเรียกย่อๆว่า as
จริงๆแล้วใครจะเขียน as ได้ จะต้องใช้แฟลชมาพอสมควร คือ ทำโมชั่นทวีน โมชั่นเชป วาดรูป รู้จัก สร้างเฟรม รูั้จัก พื้นฐานนั่นแหละ
รู้มันให้หมด ถ้าไม่รู้ อย่ามาถาม ที่นี่ as เพียวๆ
เริ่มจากสิ่งที่ต้อง ฝังลงในหัวสมอง ก่อน อ่านมันเข้าไป กับกฏเหล็ก
กฏข้อที่ 1
การเขียนสคริป มี 2 แบบ นั่นคือ เขียนบนเฟรม และเขียน บน วัตถุ
วัตถุใน ที่นี้ เราจะเรียกว่า Symbol โดย Symbol ที่สามารถเขียน as ลงไปได้นั้น มี 2 ชนิดคือ
-MovieClip
-Button
กฏข้อที่ 2
-การเขียนสคริปบนเฟรม สคริปจะทำงานก็ต่อเมื่อ หัวอ่าน (นึกให้เป็น เครื่องเล่น VDO ) เล่นมีถึงเฟรมที่มีสคริปนั้นอยู่ โดยการเขียนลงบนเฟรม สามารถเขียนลงไปได้เลย
-การเขียนสคิป บน Symbol จะต้องเขียนภายใต้ event หรือเหตุการณ์เท่านั้น
ความแตกต่างของทั้งสองสิ่งคือ สคริปบนเฟรมจะทำงานเมื่อหัวอ่านเล่นมาถึง แต่สคริปบนวัตถุ จะทำงาน เมื่อมีเหตการณ์ มากระตุ้นเท่านั้น ถ้าไม่มีเหตุการณ์ใดๆเกิดขึ้นเลย สคริปบนวัตถุ ก็จะไม่ทำงานใดๆ เลย
*เช่น สคริปบนปุ่มกด ถ้าไม่เกิดเหตุการณ์ มีคนไปคลิก สคริปบนปุ่ม ก็จะไม่ทำงานใดๆ ทั้งสิ้น
กฏข้อที่ 3
การตั้งชื่อ ฟังชั่น หรือตัวแปรใดๆ จะต้องตั้งให้ไม่ซ้ำกับคำสงวน หรือ key word
เช่น for do this _root และอื่นๆจำไม่ได้ แต่จำง่ายๆ อย่าไปตั้งซ้ำกับคำสั่ง ที่มันมีอยู่ในแฟลชก็พอแล้ว(จริงๆจะมีบางคำสั่ง ที่สามารถตั้งซ้ำได้โดยไม่เกิด error แต่เริ่มต้นอย่าไปซ้ำกับใครเลย)
กฏข้อที่ 4
เนื่องจาก as เป็นภาษาที่มอง ลักษณะของ อักษรพิมพ์เล็กและอักษรพิมพ์ใหญ่ต่างกัน ดังนั้นจึงต้องระมัดระวังในการพิมพ์ให้ถูกต้องทุกตัวอักษร
*เช่นคำสั่ง gotoAndStop จะถูกต้อง แต่ GOTOANDSTOP จะถือว่าผิด
-วิธีการจำ สำหรับคำขึ้นต้นคำแรก จะขึ้นต้นด้วย ตัวพิมพ์เล็ก ส่วนคำถัดไปจะขึ้นต้นด้วย พิมพ์ใหญ่
*เช่น gotoAndStop จะแยกได้ 3 คำ goto และ And และ Stop
*สำหรับ คำสั่งที่บ่งบอกว่าเป็นออปเจกต์ จะขึ้นต้นด้วยพิมพ์ใหญ่ เช่น
LoadVars() Sound() Date()
กฏข้อที่ 5
การจบคำสั่งใดๆ ควร ขึ้นบรรทัดใหม่ด้วยทุกครั้ง และเพื่อ ให้เป็นสันดานที่ดีติดตัวไป ควรพิมพ์ ; (เซมิโคล่อน) จบท้ายคำสั่งด้วย แต่บางคำสั่ง ไม่ต้องมี ; ถ้ามีจะ error เช่น #include
//*************************************************************
สำหรับกฏ 5 ข้อ (มีอีกรึเปล่าวะ กลัวลืม) ให้ท่องให้ขึ้นใจ แล้วต่อไปเราจะมาเริ่มต้น พื้นฐาน กันต่อ เน่อ
โอ้วว กระจู๋ดีมีสาระ
มารอเรียนครับ :12:
เยี่ยมมากครับ :25:
สุดยอด :25:
ตามมาเป็นศิษย์ครับ
ตีตั๋วๆ (+2) :25:
ดีครับๆ สอนเข้าไว้ จะตามมาเรียน :25:
:01:
Animate ยังไม่คล่องเลย :05:
ยังไงก็ขอบคุณครับ :42:
ต่อมาเราจะมาเรียนรู้คำสั่ง trace กัน คำสั่งนี้ใช้เป็นประจำเหมือนกัน
(http://img2.f0nt.com/29/6e247184dcc321bfe96eb99a479c51e1.jpg)
คลิกที่เฟรม แล้วเปิดหน้าต่าง Action ขึ้นมา แล้วพิมพ์ตามตัวอย่าง แล้วรันดู นี่คือ การเขียนโปรแกรมแรกของพวกเรา
คำสั่ง trace มีไว้สำหรับ การแสดงข้อความ หรือ ตัวแปร ออกมาทางหน้าต่าง output ซึ่งคำสั่งนี้จะไม่มีผลใดๆกับ swf หรือ งานที่เราจะนำมาใช้เลย เพราะคำสั่งนี้ มีไว้เพื่อ ทดสอบ เพื่อแสดง ตัวแปร ข้อความ ไว้แก้ไขข้อผิดพลาดของโปรแกรม (debug) ในกรณีที่ใช้คำสั่งนี้ มี 3 ทาง ที่ใช้บ่อยๆ
1.ไว้ทดสอบคริปเบื้องต้น เช่นเขียนสคริปคำนวน ก็ ใช้ trace แสดงค่าออกมาก่อนเพื่อตรวจความถูกต้อง ก่อนที่จำทำหน้าแสดงผลบนไฟล์ swf ต่อไป
2.ไว้สำหรับแก้ไขข้อผิดพลาดของโปรแกรม เช่น ติดตา่มดู ตัวแปรใดๆ ที่คิดว่า มีโอกาสเกิดความผิดพลาด เช่น เขียนโปรแกรมให้ลูกบอลกระเด้ง แต่ปรากฏว่า กระเด้งไปผิดทาง จึง trace ตัวแปร ค่าที่ทำให้ลูกบอลเด้งไปทางไหน มาดู ว่าผิดตรงไหน
3.ไว้สำหรับ เช็คว่า มีการเล่นไปถึงเฟรม หรือ มูฟวี่คลิฟตัวที่สงสัยหรือไม่
เช่น เราสร้างมูฟวี่คลิปมาตัวนึง แต่เราไม่เห็นมันแสดงผลอะไร จึงใส่คำสั่ง trace ไว้ที่เฟรมท้ายสุดของมูฟวี่คลิปตัวนั้น แล้วรันเพื่อดูผล ถ้าtrace ออกมา แสดงว่า มีการเล่นไปถึงเฟรมที่ต้องสงวสัยแน่นอน แต่ถ้าไม่ขึ้น แสดงว่า เล่นไปไม่ถึงเฟรมนั้นเลย และหาจุดผิดต่อไป
**จากในรูปเราจะเห็นว่า ที่มุมซ้ายบน จะเขียนไว้ว่า Actions - Frame ตรงนี้เกิดจากเราใส่สคริปลงบนเฟรม เราคลิกที่เฟรมแล้วเปิดหน้าต่าง Action ออกมา หากว่าเราคลิกที่ มูฟวี่คลิป มันก็จะขึ้น Actions - MovieClip หรือหากเราใส่ที่ Button มันก็จะขึ้นว่า Actions - Button
มีไว้ดูว่าตอนนี้เราใส่สคริปถูกที่หรือไม่
**ส่วนเครื่องหมาย เข็มปัก ที่ข้างตัวเลข Layer 1 : 1 มีไว้สำหรับ ปักหมุดสคริปไว้ เช่นเราต้องเขียนสคริปพร้อมกันถึง 10 วัตถุ เราก็ปักหมุดทุกตัวไว้ พอเราแก้ไข เราก็ คลิกเลือกที่แถบได้เลย จะได้ไม่ต้องสลับไปสลับมา
**อิงจาก แฟลช8 นะครับ
รออยู่
อั๊ง~ :25c:
ต่อมาเป็นเรื่องของตัวแปร
ตัวแปร หรือ Variable เป็นสิ่งที่ขาดไม่ได้ สำหรับภาษาโปรแกรมแทบทุกภาษา
ตัวแปร เปรียบเสมือน ตัวแทนของแรม เมื่อเราต้องการเก็บข้อมูลใดๆ เพื่อมาคำนวน หรือแสดงผล เราต้องเก็บไว้ที่แรม
การสร้างตัวแปรมาเก็บข้อมูล ก็เหมือนเรา สั่งเก็บลงไปที่แรม
เช่น
a = 1;นี่คือพื้นฐานง่ายๆสำหรับการกำหนดค่าให้ตัวแปร
จริงๆแล้ว การสร้างตัวแปร ขึ้นมา เราสามารถสร้างได้ หลายวิธี
การสร้างตัวแปร เราจะเรียกว่า การประกาศตัวแปร
var a;
var b =1;
var a,b,c;
d = "yahoo";เราจะใช้คำสั่ง var ในการประกาศตัวแปรนั้นๆขึ้นมา
ในบางภาษา การประกาศตัวแปรถือว่า ต้องทำทุกครั้งที่เรียกใช้ แต่ในแฟลช เราไม่จำเป็นต้องประกาศก็ได้ แต่กำหนดลงไปเลย เช่นเดียวกับโค้ดบรรทัดที่ 2
b=1;
แต่ว่าถ้าเราเขียนเป็นคลาสเราต้องประกาศตัวแปรทุกครั้ง
สำหรับตัวแปร จะมีหลายประเภท ตามแต่ชนิดของข้อมูล ที่จัดเก็บ จริงๆถ้าจะเอาเป็นวิชาการ มีเยอะมาก แต่เราจะมาเล่าให้ฟังตามภาษาชาวบ้านก็แล้วกัน
ชนิดของตัวแปร
-ตัวเลขจำนวนเต็ม integer เก็บข้อมูลชนิด จำนวนเต็ม เช่น -1 -2 0 1 2 3 4
-ตัวเลขทศนิยม float เก็บจำนวนทศนิยมเช่น 20.56
-ตัวอักษร(1ตัว) char เช่น A
-ข้อความ String เช่น สวัสดีครับ
-ตรรกกะ Boolean (จริง/เท็จ) เช่น true หรือ false อาจจะแทนด้วย 0 หรือ 1 ก็ได้ แต่นิยมให้ใช้ true /false จะดีกว่าเพราะว่า 0 1 จะไปสับสนกับเลขจำนวนเต็ม
เราสามารถใช้คำสั่ง typeOf มาเช็คได้ว่า ตัวแปรนี้ เป็นตัวแปรชนิดไหน
เช่น
a = 1;
trace( typeOf( a ) );แล้วลองรันดูนะครับ
นี่เป็นตัวอย่างที่ดีของการใช้คำสั่ง trace เหมือนกัน
typeOf จะแสดงชนิดออกมา ซึ่งมีความหมายตามนี้
อ้างอิงString คือสตริง หรือข้อความนั่นแหละ
Movie clip ข้อมูลชนิดนั้นคือมูฟวี่คลิป(ในกรณีที่ typeOf กับชื่อของมูฟวี่คลิป)
Button ข้อมูลชนิดนั้นคือปุ่ม
Text field คือ เท็กซ์ฟิล (ประเภท dynamic กับ static เดี๋ยวมีให้อ่านบทหลังๆ)
Number คือ ตัวเลข
Boolean ข้อมูลตรรกกะ จริง/เท็จ
Object เป็น ออบเจกต์ หรือวัตถุ (ก็พวก OOP ไงล่ะจ๊ะ)
Function เป็นชื่อของฟังชั่น
สำหรับการตั้งค่าให้ตัวแปรนั้น จะมีความแตกต่างระหว่างตัวแปรแต่ละชนิดเล็กน้อย
การต้องค่าที่เป็นตัวเลข จะใส่ตัวเลขลงไปได้เลย เช่น
a = 1;
b = 0.5;
การตั้งค่า ตัวแปรที่เป็น สตริง จะต้องใส่ " หรือ ' คร่อมไว้เท่านั้น เช่น
a = "สวัสดีค่ะ";
b = 'สวัสดีครับ';การตั้งค่า ตรรกกะ ไม่ต้องมี " คร่อม (หรือมีก็ได้ แต่ผมนิยมไม่มี เพราะถ้ามี มันจะไปซ้ำกับ สตริง)
เช่น
a = true;
b = false
อ้างคำพูดจาก: heart เมื่อ 29 พ.ย. 2006, 15:38 น.
จริงๆแล้วใครจะเขียน as ได้ จะต้องใช้แฟลชมาพอสมควร คือ ทำโมชั่นทวีน โมชั่นเชป วาดรูป รู้จัก สร้างเฟรม รูั้จัก พื้นฐานนั่นแหละ
รู้มันให้หมด ถ้าไม่รู้ อย่ามาถาม ที่นี่ as เพียวๆ
ขอตีสนิทกับเจ้าพวกนี้ก่อนครับ :05:
ต่อไปเราจะมาเรียนรู้เรื่อง Operator หรือตัวดำเนินการ
ตัวแรกที่เรารู้จักไปแล้วนั่นก็คือ =
มีไว้ใส่ค่าให้ตัวแปร
+ (addition) | เครื่องหมายบวก |
+= (addition assignment) | บวกค่าตามจำนวน แล้วแทนที่ลงไปในตัวแปรเดิม เช่น a += 5; หมายความว่า a มีค่าเท่าไร บวกไปอีก 5 (ค่าตัวแปร a จะมีค่าตามค่าใหม่) |
= (assignment) | อันนี้รู้กันแล้ว |
-- (decrement) | มีลบ 2 ตัวนะ เครื่องหมายนี้มีไว้ลบค่าออกทีละ 1 เช่น a--; จะมีความหมายว่า a มีค่าเท่าไร จะลบออกไป 1 |
/ (division) | เครื่องหมายหาร เช่น 52/78 |
/= (division assignment) | หารเท่ากับ ^^ มีความหมายว่า เหมือนกับ += แต่เปลี่ยนเป็นหาร |
== (equality) | ไว้ตรวจสอบ จะต่างจาก = คือ = มีไว้ให้ค่า เช่น a =1 ให้ a มีค่าเป็น 1 แต่ถ้า == สองตัวแบบนี้ไว้ตรวจสอบเช่น a == 1 จะมีความหมายว่า a มีค่าเป็น 1 จริงหรือไม่ ถ้าจริง จะเป็น true ถ้าไม่จริงจะเป็น false |
> (greater than) | เครื่องหมาย มากกว่า เช่น a > b ถ้า a มากกว่า b จะมีค่าเป้น true |
>= (greater than or equal to) | มากกว่าหรือเท่ากับ เช่น a >= b ถ้าa มีค่า มากกว่า หรือเท่ากับ b จะแสดงค่า true |
++ (increment) | บวกบวก ความหมายคือ มีเท่าไร บวกไปอีก 1 เช่น a++ หมายความว่า a มีค่าเท่าไรบวกไปอีก 1 |
!= (inequality) | ไม่เท่ากับ ความหมายตรงข้ามกับ == |
< (less than) | เครื่องหมายน้อยกว่า |
<= (less than or equal to) | เครื่องหมาย น้อยกว่า หรือเท่ากับ |
&& (logical AND) | และ ไว้สำหรับเปรียบเทียบเงื่อนไข ที่ต้องเป็นจริงทั้งสองเงื่อนไข เช่น คนจะสมัครงาน ต้องเป็นผู้หญิง และยังไม่ได้สมรสเท่านั้น คือ ต้องเป็นจริงทั้งสองเงื่อนไข |
and (logical AND) | ความหมายเดียวกันกับข้างบน แต่ใช้คำว่า and ก็ได้ |
! (logical NOT) | เครื่องหมาย นิเสธ หรือตรงข้าม เช่น ถ้า a มีค่าเป็น จริง !a จะมีค่าเป็นเท็จ |
not (logical NOT) | เช่นเดียวกับคำสั่งข้างบน |
|| (logical OR) | หรือ ไว้สำหรับเปรียบเทียบ ให้เป็นจริงเพียงเงื่อนไขใดเงื่อนไขหนึ่งเท่านั้น เช่น รับพนักงาน ผู้หญิง หรือ ผู้ชาย คือเป็นจริงเงื่อนไขใดก็ได้ แต่ถ้า เท็จทั้งคู่ ก็จะถือว่าเงื่อนไขนี้เป็นเท็จ |
or (logical OR) | เช่เดียวกับคำสั่งด้านบน |
% (modulo) | เป็นการหารเพื่อหาค่าเศษ เช่น a = 10%3 ดังนั้น a จะมีค่าเป็น 1 เพราะ 10หาร 3 เหลือเศษ 1 |
%= (modulo assignment) | คล้ายๆ += แต่เป็นการ mod แทน |
* (multiplication) | เครื่องหมายคูณ |
*= (multiplication assignment) | คล้ายๆ += แต่เปลี่ยนเป็น คูณแทน |
- (subtraction) | เครื่องหมายลบ |
-= (subtraction assignment) | คล้ายๆ += แต่เปลี่ยนเป็น ลบ แทน |
หลังจากรู้จัก operator แล้ว ลองมาทำอะไรเล่นๆซักหน่อยละกัน
width = 20;
height = 50;
ans = width*height;
trace(ans);
ตามคำสั่งด้านบนนี้นำไปเขียนลงบนเฟรม แล้วจึงรันดู
บรรทัดแรก จะกำหนดค่า width
บรรทัดที่สอง จะกำหนดค่า height
บรรทัดที่ สาม จะกำหนดค่า ans มีค่าเท่ากับ width คูณ height
บรรทัดสุดท้าย จะแสดงค่า ans ออกมา
นี่คือโปรแกรม คำนวนพื้นที่ สี่เหลี่ยม จากสูตร กว้าง คูณ สูง
สิ่งที่สามารถนำไปประยุกต์ต่อคือ เปลี่ยนเป็นจากการกำหนดค่า width กับ height ตายตัว ก็เปลี่ยนเป็นรับค่าจากผู้ใช้แทน มาคำนวน เราก็จะได้โปรแกรม คำนวนพื้นที่สี่เหลี่ยมได้สมบูรณ์แบบแล้ว
ตื่นๆๆๆๆ เรียนแค่นี้ จะเลิศเลออะไรนักหนา มาทำการบ้านกันก่อน
จากตัวอย่างด้านบน จงเขียนโปรแกรมคำนวน เส้นรอบวงกลม(หรือใครจะเขียน พื้นที่วงกลมมาก็ได้)
เส้นรอบวง จากสูตร
2*pi*r;
โดยกำหนดให้ pi มีค่าคงที่ เป็น 22/7
และ r มีค่าเป็นรัศมี เท่าไรก็ได้
ส่งเฉพาะโค้ด ก้ได้(ใครว่าง่ายไปก็ไม่ต้องทำ สำหรับมือใหม่ก่อนละกับ ปรับพื้นฐาน)
จากตัวอย่างด้านบน จงเขียนโปรแกรมคำนวน เส้นรอบวงกลม(หรือใครจะเขียน พื้นที่วงกลมมาก็ได้)
เส้นรอบวง จากสูตร
2*pi*r;
โดยกำหนดให้ pi มีค่าคงที่ เป็น 22/7
และ r มีค่าเป็นรัศมี เท่าไรก็ได้
r = user input;
pi = 22/7;
ans = 2*pi*r
trace(ans);
รับค่า r จาก user ไม่เป็น :08:
ok ครับเอาเป็นว่าเข้าใจคอมเซปต์
เดี๋ยวว่างๆจะมาโพสต่อ ใครจะทำการบ้านส่งก็ได้นะครับ จะได้ฝึกไปด้วย
โอ้ :25:
แล้วการแสดงผลออกหน้าจอ / การรับค่าโดยใส่ใน dynamic text ล่ะครับ
มันต้องกำหนดชื่อของตัวแปร/ชื่อวัตถุใส่ช่องไหนของมันครับ :09:
(สับสนมากเลยไอ้เจ้าตัวเนี้ยะ)
อ้างคำพูดจาก: ^-FakE-^ เมื่อ 30 พ.ย. 2006, 12:18 น.
จากตัวอย่างด้านบน จงเขียนโปรแกรมคำนวน เส้นรอบวงกลม(หรือใครจะเขียน พื้นที่วงกลมมาก็ได้)
เส้นรอบวง จากสูตร
2*pi*r;
โดยกำหนดให้ pi มีค่าคงที่ เป็น 22/7
และ r มีค่าเป็นรัศมี เท่าไรก็ได้
r = user input;
pi = 22/7;
ans = 2*pi*r
trace(ans);
รับค่า r จาก user ไม่เป็น :08:
เนื่องจากเราได้โปรแกรม จาก ^-FakE-^ แล้ว
r = user input;
pi = 22/7;
ans = 2*pi*r
trace(ans);สองสิ่งที่เราจะแทนที่เพื่อให้โปรแกรมของเราสมบูรณ์นั้น คือ
1. บรรทัดที่ 1 รับค่าจาก ผู้ใช้ยังไง
2.บรรทัดสุดท้าย แสดงผล ans ออกมายังไง
เราต้องมารู้พื้นฐานก่อนว่า เราจะใช้อะไร สิ่งที่รับ และ แสดงค่า นั้น เราจะใช้ text field จากเครื่องมือใน tools โดยที่ text Field จะมีอยู่ 3 รูปแบบ
1.static text
2.dynamic text
3.input text
ตามรูป
(http://img2.f0nt.com/30/8ae881a9021fb392e171367d670e7fb2.jpg)
โดยที่ ทั้ง 3 อย่าง จะมีคุณผมบัติแตกต่างกันเหมาะแก่การทำงาน ต่างกัน
1. Static Text ไว้สำหรับ ข้อความตัวหนังสือ ธรรมดา ที่ไม่ข้องเกี่ยวกับ สคริป
2.Dynamic Text ไว้สำหรับแสดงผล ตัวหนังสือ ที่สามารถเปลี่ยนแปลงได้ เช่น แต้มของเกม หรือผลลัพ คำตอบ จากการคำนวนของเรา
3.input Text ไว้สำหรับ รับค่าจากผู้ใช้ เปรียบได้กับช่อง input ของ HTML นั่นเอง
โดยที่ Dynamic text และ inputText จะมีข้อเหมือนและแตกต่างกัน นิดหน่อย
1.dynamic และ input สามารถเปลี่ยนแปลงข้อความได้จากสคริปเหมือนกัน เช่นสั่งให้แสดงผลคำว่า i love you
2.dynamic และ input ปรับเป็น multi line หรือว่า แสดงผลหลายบรรทัดได้ เหมือนกัน โดยเปลี่ยนที่ เครื่องมือตามภาพ ที่มันมีช่องเขียนว่า single line เราก็เปลี่ยนเป็น Multi line หรือว่าสำหรับ input text ก็เปลี่ยนเป็น password ได้ ถ้าเราต้องการให้ช่องนั้น แสดงผลตัวที่พิมพ์ลงไปเป็น * ดอกจันทร์แทน
3. dynamic text ไม่สามารถให้ผู้ใช้ พิมพ์เปลี่ยนแปลงได้ แต่ input ผู้ใช้พิมพ์เปลี่ยนแปลงได้
เข้าใจแล้วครับ :33:
ทีนี้สงสัยอยู่อย่างที่สอนมาในหน้าที่แล้ว (ยังไม่รู้ชื่อจานเลยไม่กล้าเรียก)
http://img2.f0nt.com/flash/fa820f4647b68de12df26a58eb69ef77.swf
ในนั้น ช่องซ้ายเป็น a ช่องขวาเป็น b และคำตอบคือ c
แล้วใส่ไอ้นี่ที่คีย์เฟรม
อ้างอิงonLoad = function () {
a = 100;
b = 200;
c = a+b;
};
โอเค ช่อง c มันออกมาเป็น 100+200=300 จริงๆ
แต่พอให้กรอก a หรือ b แล้วใส่ไอ้นี่เข้าไปที่ปุ่ม
อ้างอิงon (release, keyPress "<Enter>") {
c = a+b;
}
ค่า c มันดันกลายเป็นเอา text ใน a มาต่อกะ text ใน b ซะฉิบ :08:
ปัญหามันเกิดคือ ผมไม่รู้จะเซ็ตค่าตัวแปรยังไงให้มันรู้ว่า "นี่คือตัวเลข"
(รู้แต่ให้ trace เช็คว่าตัวแปรเป็นประเภทอะไร แต่ไม่รู้ว่าจะสั่งมันยังไง)
ดังนั้นพอกดโอเคปั๊บมันเลยคิดว่าเป็นข้อความซะอีก
เฮ้วมีพลีส
on (release, keyPress "<Enter>") {
c = int(a)+int(b);
}
ดูยูห์เก็ตหมีห์ ??
ปล. แปลกดีแฮะ เพิ่งลองเหมือนกัน เลยเพิ่งรู้ว่าบวกแบบแอนไม่ได้ :42:
ป๊าดดดด... หนึ่ง บวก หนึ่ง ได้สิบเอ็ด :30: :30: :30:
พี่แอนลองประกาศ
int a, b, c;
ก่อนนะครับ :17:
มีคำตอบอย่างเป็นวิชาการ ให้ครับ แต่รอก่อน ตอนนี้งานกำลังยุ่งอยู่
เรียนด้วยยยย :25: :25: :25:
(+1)
เดี๋ยวจบตัวอย่างนี้ได้คำตอบแน่ครับว่าทำไม บวกแบบนั้นไม่ได้ อ่านต่อนะๆ
(http://img2.f0nt.com/30/126f431c2559f5ca4d2002b0ff7d13c7.jpg)
1. สร้าง inputText ข้างบน ตั้งชื่อ instance name ว่า input ตรงลูกศรชี้
และปรับค่า ตามที่ วงแดงๆไว้ จะมี 3 ปุ่มเรียงกันอยู่ ตัวแรกจะเป็นตัวเลือกว่า text นี้จะใช้เมาส์ลากแถบดำได้หรือไม่ ตรงกลางจะเลือกว่าให้ text ตัวนี้ แสดงผลโค้ด HTML ได้หรือไม่
ตัวเลือกตัวสุดท้ายคือ เลือกให้ text มีกรอบ หรือไม่
2. สร้าง dynamic text ด้านล้าง เอาไว้แสดงคำตอบ โดยไม่ต้องใส่กรอบ แล้วตั้งชื่อ instance Name ว่า output
3. ใส่สคริปที่ปุ่ม ดังต่อไปนี้
อ้างอิงon(release){
r = Number( input.text );
pi = 22/7;
ans = 2*pi*r
output.text = ans ;
}
แล้วแสดงผลดู
http://img2.f0nt.com/flash/8a927c02814d20ab4e1f0ace8c93ddb9.swf
อธิบายคำตอบที่สงสัยกัน
เนื่องมาจาก ชนิดของข้อมูล
ตัวเลข + ตัวเลข จะเท่ากับผลรวม
ตัวเลข + ตัวหนังสือ จะเท่ากับ ตัวเลขมาต่อกัับตัวหนังสือ
ตัวหนังสือ+ตัวหนังสือ จะเท่ากับ ตัวหนังสือมาต่อกัน
**เนื่องจากข้อมูลที่รับเข้ามาจาก text นั้น จัดเป็นข้อมูลประเภท String ดังนั้น เมื่อนำมาคำนวน จึงผิดพลาด แทนที่จะได้ ค่าคำนวน กลับเป็นค่าเอามาต่อกัน
**เนื่องจากเครื่องหมาย + สามารถแปลความหมายได้ถึงการ นำ สตริง มาต่อกัน จึงมาต่อกัน แต่ถ้าเป็นเครื่องหมายอื่น เช่น คูณ หาร ลบ หากนำ สตริง มาคูณกัน หรือ หารกัน จะได้ผลออกมาว่า NaN
ซึ่งน้องแนน จะย่อมาจาก Not a Number หรือ ไม่ใช่ผู้ชายยย ม่ายช่ายผู้ชายย (น้องแนนไม่ใช่ผู้ชาย)
เหวอ ไม่ใช่ตัวเลขครับท่าน
ดังนั้น เราจะต้องแปลงชนิดของข้อมูล
ที่มีคนตอบว่า int( ) ครอบไว้ ก็ถูกต้อง เพราะคำสั่งนี้จะแปลงค่าออกมา เป็น integer หรือเลขจำนวนเต็ม
แต่ว่า มันจะผิดพลาดได้ ถ้าเรากรอกเป็นเลขทศนิยม ใช้ int ครอบ มันจะตัดทศนิยมของเราทิ้ง เพราะมันจะทำเป็นเลขจำนวนเต็ม
วิธีที่ดี คือใช้ Number ครอบ ถึงจะแปลงเป็นตัวเลข
ในกรณีตรงข้ามกัน ถ้าหากว่า ตัวเลข จะนำมาต่อกับตัวเลข แต่ว่า พอ + กันเลย มันดันรวมกันเลย
เราก็ต้องแปลงค่าใดค่าหนึ่ง หรือทั้งสองค่าก็ได้ ให้เป็น สตริง ก่อน โดยใช้
String(สิ่งที่ต้องการแปลง )
ครอบไว้อีกทีครับท่าน
:12:
:25:
ถามนิดนึงนะครับ
a = 2.56
int(a) คือ 2
Number(a) คือ 3 หรือเปล่าครับ
Number(a) = 2.56 :09:
คือ Number จะไม่ปัดครับ เพราะว่ Number หมายถึงตัวเลข ที่รวมไปถึงทศนิยมด้วย
แต่ int จะหมายถึงเลขจำนวนเต็ม ดังนั้นถ้ามีเศษทศนิยม ก็จะปัดทิ้่งหมดเลย
จริงๆแล้วเราสามารถหาคำตอบได้ด้วยตัวเองจาก
a = 2.56;
trace( Number(a) );
trace( int(a) );
ซับซ้อนกันอีกหน่อยนึง กับคำสั่ง เงื่อนไข
นั่นคือ if นั่นเอง จริงๆแล้วทุกครั้งที่มีคนมาขอเรียนแฟลชกับผม ผมจะถามเค้าว่า if แปลว่าอะไร
สิ่งที่ผมกำลังสื่อความหมายก็คือ ถ้าคุณอ่านคำสั่ง แล้วยังไม่รู้ว่า มันแปลว่าอะไร มันก็ยากที่จะเข้าใจมันโดยเร็ว ผมแนะนำให้พกดิกชันนารี่ ไว้แปลว่าความหมายของคำสั่งต่างๆหมายควา่มว่าอะไร
if แปลว่า ถ้า
เช่น ถ้าฝนตก ก็จะเปียก
ใช้่สำหรับเป็นตัวเลือก ที่จะทำสิ่งใด ถ้าเงื่อนไข เป็นอะไร
รูปแบบคำสั่ง
if( ){
}
ภายในวงเล็บ (.... ) คือเงื่อนไข ถ้าภายในวงเล็บนี้ มีค่าเป็น true ก็จะทำตามคำสั่งภายในวงเล็บ {. ....}
เช่น
if(ฝนตก == true ){
trace("เปียก");
}
ย้อนกลับไปอ่าน Operator จะพบว่า เราต้องใช้ == คือเท่ากับสองตัว เพราะว่า จะเป็นการเปรียบเทียบ
และคำสั่ง else ทำงานยังไง ลองดูคำสั่งต่อไปนี้
if( ฝนตก == true ){
trace("เปียก");
}else{
trace("ไม่เปียก");
}
else คือ อื่นๆนอกเหนือจากเงื่อนไขแรก
แต่ถ้าเรามีเงื่อนไขมากกว่า เราก็สามารถเพิ่มเติมด้วยคำสั่ง else if เช่น
if( a ){
............
}else if( b ){
...........
}else if( c ){
........
}else{
...other....
}
ง่ายใช่ไหมครับ
ตัวอย่างง่ายๆของการใช้คำสั่ง if คือ การคิดเกรด จากคะแนนสอบ
การบ้าน จงเขียนโปรแกรม คิดเกรดจากคะแนนสอบ โดยที่
คะแนน
0-49 ได้เกรด 0 (รวมไปถึงคะแนนติดลบ ซึ่งมีรึเปล่าวะ)
50-59 เกรด 1
60-69 เกรด 2
70-79 เกรด 3
80 - 100 เกรด 1
ถ้ากรอก นอกจากนั้น ถือว่าผิดพลาด ให้แสดง Error
แถมให้อีกคำสั่ง คือ isNaN( ... );
คำสั่งนี้ จะเป็น true ก็ต่อเมื่อ ภายในวงเล็บเป็นสิ่งที่ไม่ใช่ตัวเลข
เช่น
x = "100";
a = isNaN(x);
a จะมีค่าเท่ากับ true เพราะว่า x ไม่ได้เป็นตัวเลข เพราะเราใช้ " คร่อม จึงถือว่าเป็น สตริง หรือตัวหนังสือ
x = 100;
a = isNaN(x);
a จะมีค่าเป็น false เพราะว่า x เป็นตัวเลข
ไว้สำหรับใครที่จะทำโจทย์ด้านบนไว้ตรวจสอบว่าผู้ใช้ กรอกสิ่งที่เป็นตัวเลข หรือตัวหนังสือ จะได้แสดง Error ได้ถูกต้อง
**อย่าลืมว่า ข้อมูลที่กรอกลง text จะเป็นข้อมูลชนิด String ให้แปลงเป็นตัวเลขด้วยนะ
การบ้าน จงเขียนโปรแกรม คิดเกรดจากคะแนนสอบ โดยที่
คะแนน
0-49 ได้เกรด 0 (รวมไปถึงคะแนนติดลบ ซึ่งมีรึเปล่าวะ)
50-59 เกรด 1
60-69 เกรด 2
70-79 เกรด 3
80 - 100 เกรด 1
ถ้ากรอก นอกจากนั้น ถือว่าผิดพลาด ให้แสดง Error
mark = Number( input.text );
if(mark < 50){
trace("Grade 0");
}
else if(mark < 60){
trace("Grade 1");
}
else if(mark < 70){
trace("Grade 2");
}
else if(mark < 80){
trace("Grade 3");
}
else if(mark <= 100 ){
trace("Grade 4");
}
else
{ trace("Error");}
:46:
ขอบคุณครับ :25:
ขอบคุณสำหรับสาระดีๆค่ะ :33:
ทำสีนวลซ่อนไว้ก็ดีนะ เผื่อคนอื่นทำต่อ :35: