27 มกราคม 2555

FLASH GAME การสร้างเกมภาพระบายสี Color Book

เนื้อหาในส่วนนี้จะเป็นวีดีโอสอนการเขียนเกมภาพระบายสีโดยใช้โปรแกรม Adobe Flash และ Action Script 3 จัดทำในลักษณะของวีดีโอ จะได้เรียนรู้วีธีการสร้างและวิธีการเขียน ไม่เก่งการเขียนโปรแกรมก็เรียนรู้ได้ ไม่เคยเขียน Action Script ก็ทำตามได้ สรุป ใครๆ ก็สามารถทำได้ถ้าได้ดูและทำตาม

วีดีโอสอนการเขียนเกมภาพวาดระบายสี


** ในวีดีโอ มีส่วนที่ต้องเพิ่มเติมแก้ไข เนื่องจากไม่ได้บอกไว้ ตรงเส้นกรอบ-การตั้งชื่อ ให้กำหนดตามภาพ


ด้านล่างนี้คือโค้ดคำสั่ง Action Script 3.0 ที่ใช้ในโปรแกรมที่นำเสนอข้างต้น
โดยการเขียนไว้ภายใต้เลเยอร์ action

var np:Number = 17;
var nc:Number = 10;
var color:Number = 0xffffff;
var cArray:Array = new Array(0xff0000,0x00ff00,0x0000ff,0xffff00,0x00ffff,
        0xff00ff,0x66ff66,0x666666,0x000000,0xffffff);
var colorchange:ColorTransform = new ColorTransform();
GameStart();
function GameStart() {
    btnNew.addEventListener(MouseEvent.CLICK, mcNew); 
    for (var ip:uint = 1; ip <= np; ip++) {
        colorchange.color = 0xffffff;
  //trace(this["p"+ip].name);
  this["p"+ip].transform.colorTransform = colorchange;
        this["p"+ip].addEventListener(MouseEvent.CLICK, mcPaint);
    }
    for (var ic:uint = 1; ic <= nc; ic++) {
        this["c"+ic].addEventListener(MouseEvent.CLICK,mcColor);
        colorchange.color = cArray[ic - 1];
        this["c"+ic].transform.colorTransform = colorchange;
    }
    colorchange.color = color;
    sc.transform.colorTransform = colorchange;
}
function mcNew(e:MouseEvent): void {
    for (var ip:uint = 1; ip <= np; ip++) {
        colorchange.color = 0xffffff;
  this["p"+ip].transform.colorTransform = colorchange;
   }
}
function mcColor(e:MouseEvent): void {
    var objName:String = e.target.name;
    color = cArray[uint(objName.substr(1,(objName.length)-1))-1];
    colorchange.color = color;
    sc.transform.colorTransform = colorchange;
}
function mcPaint(e:MouseEvent):void {
    colorchange.color = color;
    this[e.target.name].transform.colorTransform = colorchange;
}
เขียนเกมไม่ยากใช่ไหม

47 ความคิดเห็น:

phimthum กล่าวว่า...

คือว่าลองทำแล้วมัน error ค่ะ แฮๆ
TypeError: Error #1010: A term is undefined and has no properties.
at _fla::MainTimeline/GameStart()
at _fla::MainTimeline/frame1()
ขึ้นมาแบบนี้อะค่ะ คือเพิ่งเคยทำขอคำแนะนำหน่อยนะค่ะ ขอบคุณค่ะ ^ ^

เกษม กมลชัยพิสิฐ กล่าวว่า...

เกิดจากเราไม่ได้ตั้งชื่อตรง instant name บางตัว ไล่ดูดีๆครับ

phimthum กล่าวว่า...

แฮๆ จริงๆด้วย ขอบพระคุณมากนะค่ะ ทำได้แล้วคร้าาา

เกษม กมลชัยพิสิฐ กล่าวว่า...

http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

baboza15 กล่าวว่า...

เฮียเกษมครับ คือผมจะรบกวนให้พี่ช่วยดูอะไรนิดหน่อยน่ะครับ
คือผมลองทำตามที่เฮียสอนในคลิ๊ปแล้ว แต่ผมไม่ทราบว่าผมผิดตรงส่วนไหนหรือเปล่า
ทำไมการแสดงผลมันถึงไม่ขึ้นตามที่ตั้งไว้น่ะครับ
http://img814.imageshack.us/img814/4162/51406025.jpg

ไม่ระบุชื่อ กล่าวว่า...

ไม่รู็ว่าผิดโครดตรงไหนเเต่มันทำไม่ได้อ่ะก็ทำตามทุกย่างเเล้วนะ

เกษม กมลชัยพิสิฐ กล่าวว่า...

ดู Error ที่ Flash ว่ามีข้อความอย่างไร ถึงจะตอบถูกว่าผิดที่ไหน
ถ้าให้เดาตอนนี้ ก็บอกได้ว่า กำหนด instance name ของออปเจกต์ไม่ถูกหรือไม่ได้กำหนด

ไม่ระบุชื่อ กล่าวว่า...

ทำไมรันออกมาแล้ว ขอบเส้นของรูปที่วาดไม่ขึ้นอ่ะครับ แต่สีใช้ได้ครับ ^^

เกษม กมลชัยพิสิฐ กล่าวว่า...

เมื่อเราวาดรูปเส้นกับสีภายใน เมื่อเรานำมาสร้าง symbol ใน วีดีโอ จะเลือกเฉพาะสีด้านใน เท่านั้นในการนำมาสร้างเป็น symbol แล้วเส้นส่วนหนึ่งจะถูกสีทับ ดังนั้น เราต้องกำหนด ขนาดของเส้นให้มากกว่า 1 point จากตัวอย่างในวีดีโอ กำหนดไว้ 3 point เพราะจะโดนสีภายในทับไปส่วนหนึ่ง

วิธีแก้ เพิ่มขนาดของเส้นในการวาดภาพให้มากขึ้น

แชมป์ กล่าวว่า...

ขอ Adobe Flash Cs4 หน่อยครับ

ขอบคุณครับ

เกษม กมลชัยพิสิฐ กล่าวว่า...

ให้ไม่ได้หรอก จะเป็นการละเมิดลิขสิทธิ์

ตั๊กม้อ กล่าวว่า...

พี่ครับพอดีทำงานรูปเดียวแล้วทำได้สำเร็จ แต่พอผมจะทำงานหลายๆรูปในชิ้นเดียวกับ error ครับผมแบบว่า ผมจะทำ A-Z ทำตัว A ได้ตามปกติ แต่พอทำตัว B แล้วลองตรวจสอบดูกับ error ครับผม ผมใน Scene ของใครของมันครับ ตอนยังไม่ได้ใส่ โค้สก็ลิ้งค์ไก้ปกติ แต่พอใส่ โค้สให้ตัว B กับ error หมดเลย หรือผมต้องเปลี่ยน จากตัว p1 เป็นตัวอื่นหรือเปล่าครับ ขอบคุณมากเลยครับ

เกษม กมลชัยพิสิฐ กล่าวว่า...
ความคิดเห็นนี้ถูกผู้เขียนลบ
เกษม กมลชัยพิสิฐ กล่าวว่า...

ให้ลองสร้าง Symbol ซ้อน Symbol
เพื่อเก็บรูปแต่ละรูปไว้ใน Symbol
เช่นรูปที่ 1 สร้าง symbol แล้วใส่ symbol รูปไว้ในนั้น แล้วตั้งชื่อ p1...pn
ส่วนรูปที่ 2 ก็สร้าง symbol เช่นกัน แล้วสร้าง symbol รูปใส่ไว้ แล้วตั้งชื่อเป็น p1....pn เหมืนเดิมได้
แต่เวลาเขียนโปรแกรมต้องต้องมีการอ้าง symbol หลักก่อน p1
ในวีดีโอ อื่นของผม จะมีวิธีการอ้าง sysbol ซ้อนกัน symbol.p1 .... ศึกษาแล้วนำมาประยุกต์ใช้ดู

หรือใช้วิธีแบบที่คุณคิดไว้ก็ได้ คือสร้าง p1...pn ไว้สำหรับรูปที่ 1 , a1...an รูปที่ 2 ก็ได้

เกษม กมลชัยพิสิฐ กล่าวว่า...

บางทีคำสั่งไม่ผิด แต่ผิดที่การตั้งชื่อ symbol ไม่ตรงกับคำสั่งก็ได้

ตั๊กม้อ กล่าวว่า...

พี่ครับผมขอโค้ส การอ้าง symbolหลัก หน่อยครับ
ผมทำ วิธีแบบที่คุณคิดไว้ก็ได้ คือสร้าง p1...pn ไว้สำหรับรูปที่ 1 , a1...an รูปที่ 2 ก็ได้
แต่ติดตรงที่ อ้าง symbol ไม่เป็นครับ ถ้าตามที่ผมเข้าใจ จะเป็นแบบนี้
btn1.addEventListener(MouseEvent.CLICK,openbtn1);
function openbtn1(e:MouseEvent):void
{
gotoAndStop(1,"Scene 2");
}
คือกดปุ่มแล้วไปเล่นที่ ซีนอื่น แต่มันก็ error

ขอบคุณครับ ลองทำตามที่พี่สอนแล้วแต่ไม่รู้เรื่องการเขียนโค้สอ้างนี้หล่ะครับ

ตั๊กม้อ กล่าวว่า...

หรือขอวีดีโอ การอ้าง sysbol ซ้อนกัน symbol คือผมหาไม่เจอครับ

ตั๊กม้อ กล่าวว่า...

พี่ครับผมขอโค้ส การอ้าง symbolหลัก หน่อยครับ
ผมทำ วิธีแบบที่คุณคิดไว้ก็ได้ คือสร้าง p1...pn ไว้สำหรับรูปที่ 1 , a1...an รูปที่ 2 ก็ได้
แต่ติดตรงที่ อ้าง symbol ไม่เป็นครับ ถ้าตามที่ผมเข้าใจ จะเป็นแบบนี้
btn1.addEventListener(MouseEvent.CLICK,openbtn1);
function openbtn1(e:MouseEvent):void
{
gotoAndStop(1,"Scene 2");
}
คือกดปุ่มแล้วไปเล่นที่ ซีนอื่น แต่มันก็ error

ขอบคุณครับ ลองทำตามที่พี่สอนแล้วแต่ไม่รู้เรื่องการเขียนโค้สอ้างนี้หล่ะครับ

Unknown กล่าวว่า...

แล้วถ้าจะเปลี่ยนจากลูกศร เป็นถังสี เมื่อไปชี้ที่รูปภาพพอจะทำได้หรือเปล่าครับ และทำยังไงครับ

ไม่ระบุชื่อ กล่าวว่า...

ขอบคุณครับ ผมเอาไปทำส่งครูได้พอดี

ไม่ระบุชื่อ กล่าวว่า...

มีตัวเกมให้โหลดมั้ยครับ ?

ไม่ระบุชื่อ กล่าวว่า...

มีตัวเกมให้โหลดมั้ยครับ ?

ไม่ระบุชื่อ กล่าวว่า...

มีตัวเกมให้โหลดมั้ยครับ ?

ไม่ระบุชื่อ กล่าวว่า...

มีตัวเกมให้โหลดมั้ยครับ ?

ไม่ระบุชื่อ กล่าวว่า...

มีตัวเกมให้โหลดมั้ยครับ ?

เกษม กมลชัยพิสิฐ กล่าวว่า...

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

ไม่ระบุชื่อ กล่าวว่า...

ขอบคุณค่ะ,, :)

ไม่ระบุชื่อ กล่าวว่า...

แล้วถ้าเริ่มเขียนด้วย Action Script 2.0 ไปแล้ว จะเอา
โค้ดคำสั่งนี้ไปใช้ได้มั้ยค่ะ ถ้าไม่ได้ ต้องทำยังไง

เกษม กมลชัยพิสิฐ กล่าวว่า...

เกมส์นี้ต้องเขียนด้วยAS3 เท่านั้นครับ

ไม่ระบุชื่อ กล่าวว่า...

พี่ค่ะ รบกวนถามหน่อย พอดีหนูใช้flash8 ทำแล้วจะใช้โค้ชนี้ได้ไหม ถ้าไม่ได้ต้องทำยังไงค่ะ ขอบคุณมากเลยค่ะ

พรหมมินทร์ กล่าวว่า...

ขอโทษครับ ผมชื่อเพชร เรียนอยู่ปี4 กำลังทำโปรเจค
ผมต้องการที่จะสร้างเกมFlash เกี่ยวกับการประกอบอุปกรณ์ คือการลากชิ้นส่วนให้เข้าที่เพื่อให้เสร็จสมบูรณ์
แล้วให้คะแนนว่าได้กี่ชิ้น อยากให้พี่แนะนำหนังสือหรืออะไรก็ได้ครับ ขอบคุณครับ

ไม่ระบุชื่อ กล่าวว่า...

**Error** Scene=Scene 1, layer=action, frame=1:Line 6: The class or interface 'ColorTransform' could not be loaded.
var colorchange:ColorTransform = new ColorTransform();

**Error** Scene=Scene 1, layer=action, frame=1:Line 10: The class or interface 'uint' could not be loaded.
for (var ip:uint = 1; ip <= np; ip++) {

**Error** Scene=Scene 1, layer=action, frame=1:Line 16: The class or interface 'uint' could not be loaded.
for (var ic:uint = 1; ic <= nc; ic++) {

**Error** Scene=Scene 1, layer=action, frame=1:Line 24: The class or interface 'MouseEvent' could not be loaded.
function mcNew(e:MouseEvent): void {

**Error** Scene=Scene 1, layer=action, frame=1:Line 25: The class or interface 'uint' could not be loaded.
for (var ip:uint = 1; ip <= np; ip++) {

**Error** Scene=Scene 1, layer=action, frame=1:Line 30: The class or interface 'MouseEvent' could not be loaded.
function mcColor(e:MouseEvent): void {

**Error** Scene=Scene 1, layer=action, frame=1:Line 36: The class or interface 'MouseEvent' could not be loaded.
function mcPaint(e:MouseEvent):void {

**Error** Scene=Scene 1, layer=color, frame=1:Line 6: The class or interface 'ColorTransform' could not be loaded.
var colorchange:ColorTransform = new ColorTransform();

**Error** Scene=Scene 1, layer=color, frame=1:Line 10: The class or interface 'uint' could not be loaded.
for (var ip:uint = 1; ip <= np; ip++) {

**Error** Scene=Scene 1, layer=color, frame=1:Line 17: The class or interface 'uint' could not be loaded.
for (var ic:uint = 1; ic <= nc; ic++) {

**Error** Scene=Scene 1, layer=color, frame=1:Line 25: The class or interface 'MouseEvent' could not be loaded.
function mcNew(e:MouseEvent): void {

**Error** Scene=Scene 1, layer=color, frame=1:Line 26: The class or interface 'uint' could not be loaded.
for (var ip:uint = 1; ip <= np; ip++) {

**Error** Scene=Scene 1, layer=color, frame=1:Line 31: The class or interface 'MouseEvent' could not be loaded.
function mcColor(e:MouseEvent): void {

**Error** Scene=Scene 1, layer=color, frame=1:Line 37: The class or interface 'MouseEvent' could not be loaded.
function mcPaint(e:MouseEvent):void {

Total ActionScript Errors: 14 Reported Errors: 14

มันเปนงี้ง่าหนูไปทำไรผิดป่าวคะ

เกษม กมลชัยพิสิฐ กล่าวว่า...

Error เยอะ ให้ ทำใหม่ทำให้ช้าๆตาม vdo
ใช้ AS3 อย่าขี้เกียจ ห้ามข้ามขั้นตอน ห้ามก็อปปี้มั่ว

เพชรปี4 ศึกษาเรื่อง drag & drop ให้เข้าใจก่อน ค้นหาใน YouTube มีฝรั่งทำตัวย่างไว้เยอะเลย

เกษม กมลชัยพิสิฐ กล่าวว่า...

Error เยอะ ให้ ทำใหม่ทำให้ช้าๆตาม vdo
ใช้ AS3 อย่าขี้เกียจ ห้ามข้ามขั้นตอน ห้ามก็อปปี้มั่ว

เพชรปี4 ศึกษาเรื่อง drag & drop ให้เข้าใจก่อน ค้นหาใน YouTube มีฝรั่งทำตัวย่างไว้เยอะเลย

ไม่ระบุชื่อ กล่าวว่า...

ถ้าต้องการมี 12 สี ต้องเปลี่ยน var nc:Number = 12;

ใช่ไหมครับ แล้วในส่วนของ

for (var ic:uint = 1; ic <= nc; ic++) {
this["c"+ic].addEventListener(MouseEvent.CLICK,mcColor);
colorchange.color = cArray[ic - 1];
this["c"+ic].transform.colorTransform = colorchange;

ต้องเปลี่ยนตรงไหนบ้างครับ คือผมทำแล้วมันขึ้นสีตามที่กำหนด แต่ตอนที่เอาเมาส์ไปคลิกสีมันขึ้นสี ที่ 9 และสีที่ 10 สีที่ 11และ 12 มันไม่ขึ้นตามครับ

ไม่ระบุชื่อ กล่าวว่า...

พี่ค่ะ รบกวนถามหน่อยค่ะ คือตรงที่
colorchange.color = 0xffffff; ที่บอกว่า รูปจะเป็นสีขาว
แต่พอทำแล้วมันขาวทั้งรูป แล้วไม่มีเส้นเลย
รบกวนช่วยบอกหน่อยค่าา ว่ามันผิดพลาดตรงไหน

ขอบคุณค่าาา

เกษม กมลชัยพิสิฐ กล่าวว่า...

โค้ดตามตัวอย่าง

ที่มีคนนำไปประยุกต์และทำเกม ไว้สวยงาม
ดูได้ที่

http://panida-thesis.blogspot.com/2013/05/abc-test.html#comment-form

Unknown กล่าวว่า...

ขอบคุณมากครับ มีประโยชน์มากเลย

ไม่ระบุชื่อ กล่าวว่า...

ถ้าจะเพิ่มเสียงในแต่ละสีต้องทำยังไงคะ
ขอบคุณคะ

ไม่ระบุชื่อ กล่าวว่า...

อยากทราบว่าถ้าต้องการทำเป็นเกมที่มีหลายๆsceneที่เป็นคนละภาพกัน จะต้องกำหนดตัวแปรอย่างไรบ้างคะ เป็น p19 p20 ต่อไปได้เรื่อยๆเลยใช่ไหมคะ แล้วตรงจานสีต้องเปลี่ยนเป็น c11 c12 หรือว่าเอาจานสีอันเดิมมาใช้ได้เลยคะ ถ้ากำหนดตัวแปรใหม่แล้วเรื่องเขียนสคริปต์ในแต่ละ sceneต้องแก้อย่างไรบ้างคะ ขอบคุณค่าาา :)

ไม่ระบุชื่อ กล่าวว่า...

วิธีทำปุ่มลิงค์จากไฟล์งานอันหนึ่งไปอีกอันหนึ่ง ที่เป็นไฟล์งานแฟลชเหมือนกันทำยังไงค่ะ

ไม่ระบุชื่อ กล่าวว่า...

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

ไม่ระบุชื่อ กล่าวว่า...

ยากครับ
แต่ขอ ก๊อบละกันนะครับ
ขอบคุณมากครับ

Unknown กล่าวว่า...
ความคิดเห็นนี้ถูกผู้เขียนลบ
THE SECRET OF DRAGONRAJA กล่าวว่า...

พี่ค่ะ ถ้าหากเราจะสร้างเกมผสมสีนี่ เราต้องทำยังไงคะ ประมาณว่า สีแดง ผสม น้ำเงินให้เป็น สีม่วงอะคะ

Unknown กล่าวว่า...

คือผมทำมาแล้ว มันเทสีไม่ได้อะครับ แล้วก็ไม่มีerrorขึ้นนะครับ TT #ร้องไห้หนักมาก

Unknown กล่าวว่า...

คือว่าทำตามแล้ว มันขึ้นแบบนี่นะค่ะ
TypeError: Error #1010: A term is undefined and has no properties.
at Untitled_fla::MainTimeline/GameStart()
at Untitled_fla::MainTimeline/frame1()
และตรงแถบ ช่องสีก้อไม่ขึ้นสีด้วยค่ะ
พอกดเริ่มใหม่ก็ขึ้นแบบนี้นะค่ะ
TypeError: Error #1010: A term is undefined and has no properties.
at Untitled_fla::MainTimeline/mcNew()

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.