เริ่มเดินไปกับ Flash ActionScript

เริ่มโพสต์โดย heart, 29 พ.ย. 2006, 15:38 น.

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

heart

ok ครับเอาเป็นว่าเข้าใจคอมเซปต์

เดี๋ยวว่างๆจะมาโพสต่อ ใครจะทำการบ้านส่งก็ได้นะครับ จะได้ฝึกไปด้วย

iannnnn

โอ้ :25:


แล้วการแสดงผลออกหน้าจอ / การรับค่าโดยใส่ใน dynamic text ล่ะครับ
มันต้องกำหนดชื่อของตัวแปร/ชื่อวัตถุใส่ช่องไหนของมันครับ :09:
(สับสนมากเลยไอ้เจ้าตัวเนี้ยะ)

heart

#17
อ้างคำพูดจาก: ^-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

ตามรูป


โดยที่ ทั้ง 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 ผู้ใช้พิมพ์เปลี่ยนแปลงได้


iannnnn

เข้าใจแล้วครับ  :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 เช็คว่าตัวแปรเป็นประเภทอะไร แต่ไม่รู้ว่าจะสั่งมันยังไง)
ดังนั้นพอกดโอเคปั๊บมันเลยคิดว่าเป็นข้อความซะอีก


เฮ้วมีพลีส

Maggot

on (release, keyPress "<Enter>") {
c = int(a)+int(b);
}


ดูยูห์เก็ตหมีห์ ??

ปล. แปลกดีแฮะ เพิ่งลองเหมือนกัน เลยเพิ่งรู้ว่าบวกแบบแอนไม่ได้  :42:
... กอล์ฟจ๊ะ

Dayight

ป๊าดดดด... หนึ่ง บวก หนึ่ง ได้สิบเอ็ด    :30: :30: :30:
กินรอบวง

ยุนเอ


พี่แอนลองประกาศ

int a, b, c;

ก่อนนะครับ  :17:

เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย

heart

มีคำตอบอย่างเป็นวิชาการ ให้ครับ แต่รอก่อน ตอนนี้งานกำลังยุ่งอยู่

iSharp

รับงานถ่ายภาพ
www.rpash.com

heart

#24
เดี๋ยวจบตัวอย่างนี้ได้คำตอบแน่ครับว่าทำไม บวกแบบนั้นไม่ได้ อ่านต่อนะๆ



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(สิ่งที่ต้องการแปลง )

ครอบไว้อีกทีครับท่าน


ยุนเอ

เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย

Zafire06


Layiji

ถามนิดนึงนะครับ

a = 2.56

int(a)  คือ 2
Number(a) คือ 3 หรือเปล่าครับ
นักเขียนการ์ตูนรายปี

Zafire06


heart

คือ Number จะไม่ปัดครับ เพราะว่ Number หมายถึงตัวเลข ที่รวมไปถึงทศนิยมด้วย

แต่ int จะหมายถึงเลขจำนวนเต็ม  ดังนั้นถ้ามีเศษทศนิยม ก็จะปัดทิ้่งหมดเลย


จริงๆแล้วเราสามารถหาคำตอบได้ด้วยตัวเองจาก


a = 2.56;
trace( Number(a) );

trace( int(a) );

SMF 2.1.7 © 2026, Simple Machines