หน้า: 1 ... 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 ... 31
 
ผู้เขียน หัวข้อ: อนุบาลงาน ActionSctipt  (อ่าน 279950 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
โค้ด:
[flash=200,200]http://D:\Kwantrai\Flash animation\Training\ActionScript\removeMovieClip2.swf[/flash]
ใช้ flash CS2 ค่ะ
ไม่รู้ว่าเกี่ยวรึเปล่า  เศร้า

เอ่อ แทรกแฟลชแบบนั้นไม่ได้นะครับ  ไม่มีใครเห็นหรอกครับ (เหงื่อแตกพลั่ก)
บันทึกการเข้า

Today you , Tomorrow me.
อืม... ถ้ายังไงลองส่งไฟล์ให้ผมมาทาง email ก็ได้ครับ
น่าจะช่วยกันดูได้ง่ายกว่า  ไอ้มืดหมี

------------------------------------------------------------------------------------------
เข้าสู่เรื่อง Array
array นั้นส่วนใหญ่ที่ผมใช้ จะใช้เพื่อเก็บข้อมูลที่เป็นชุดคล้ายๆกัน
เพื่อนำมาแสดงผลได้ง่าย ต่อการใช้พวก loop ต่างๆ

เช่น ถ้าผมจะทำพวก link banner ให้แสดงต่อลงมาเรื่อยๆ อะไรทำนองนั้น

เช่น
<a href="http://img2.f0nt.com/flash/eae5cec5e6f8d69528cd072c1ed0b7a7.swf" target="_blank">http://img2.f0nt.com/flash/eae5cec5e6f8d69528cd072c1ed0b7a7.swf</a>

อันนี้ผมใช้แค่ array 1 ตัว
แล้วเก็บค่า
"http://www.f0nt.com"
"http://www.thaiflashdev.com"
"http://www.itemstudio.org"

ตามลำดับ

ซึ่งเวลาจะอ้างถึงค่าต่างๆในตัวแปร array นั้น ก็จะเรียกโดย
โค้ด:
link[i] // สมมุติให้ link เป็นตัวแปรประเภท array ของข้างบน และ ค่า i แสดงถึง ตำแหน่งที่ต้องการดึงค่าออกมา

เช่นถ้าเราเรียก
link[0] ก็จะมีค่าเท่ากับ "http://www.f0nt.com" นั่นเอง
** อันนี้ มี 3 ตัว ก็จะมีตำแหน่งเป็น 0 , 1 ,2 ตามลำดับ
แอบอ้าง
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
trace(link[0]);
trace(link[1]);
trace(link[2]);
หรือ
แอบอ้าง
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
for(i=0;i<3;i++){
   trace(link);
}
การใช้ ตัวแปรประเภท array ยังมีข้อดีอีกอย่างนึง คือเราไม่จำเป็นต้องหาความยาวของ array เพราะมันจะมี property ให้เราใช้คือ
link.length
แอบอ้าง
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
trace(link.length);
for(i=0;i<link.length;i++){
   trace(link);
}

พักเหนื่อยกันก่อน แล้วเดี๋ยวมาต่อกัน อืมมมมห์
« แก้ไขครั้งสุดท้าย: 29 เม.ย. 2008, 09:26 น. โดย poloh » บันทึกการเข้า

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

นักเขียนการ์ตูนรายปี
โอ้ว ขอบคุณอีกทีหลังโรลแบ็กครับ
บันทึกการเข้า

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

ขอบคุณนะครับ ที่เข้ามาอ่านกัน
ถ้างงตรงไหน บอกให้ผมรู้ด้วยนะครับ
จะได้พัฒนาวิธีการเขียนด้วย หยี

จากโค้ดข้างบน ผมได้ใช้ array เพื่อเก็บค่า url แล้วก็นำมาแสดงเป็นชื่อ กับ ลิ้ง

แล้วถ้าต้องการให้ชื่อที่แสดง ไม่ใช่ลิ้งที่เป็น http://www.?????~ อะไรพวกนี้ล่ะ จะทำยังไง
ใครว่างๆ คิดออก แล้วลองทำดูก็ได้ครับ

ไว้พรุ่งนี้จะมาอธิบายวิธีทำวิธีนึงให้ดู
(มันทำได้หลายวิธีนะครับ
ได้ผลลัพธ์ออกมาตามที่ต้องการได้ก็โอเคละ อืมมมมห์
อย่าไปซีเรียสกับวิธีการทำ)

ปล. ขออภัยที่ทิ้งช่วงไปนานด้วยนะครับ เผอิญป่วย + งานเข้าเล็กน้อย ฮิ้ววว

บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
มาอธิบายโค้ดตัวเก่าที่ผมทำไปก่อนละกันครับ
ถ้าใครเปิดตัว fla ที่ผม zip ไปตัวเก่า ก็จะเห็นโค้ดตามข้างล่างนี้
แอบอ้าง
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
for(i=0;i<link.length;i++){
   _root.attachMovie("mc_menu","menu_"+i,i);
   _root["menu_"+i]._x = 100;
   _root["menu_"+i]._y = 50*i + 25;
   _root["menu_"+i].txtUrl = link[ i ];
   _root["menu_"+i].onRollOver = function(){
      this.gotoAndStop(2);
   }
   _root["menu_"+i].onRollOut = _root["menu_"+i].onReleaseOutside = function(){
      this.gotoAndStop(1);
   }
   _root["menu_"+i].onRelease = function(){
      getURL(this.txtUrl);
   }
}

และจะเห็น Movie Clip ใน library อีก 2 ตัว คือ
 -mc_menu
 -mc_whitebox


ในตัว mc_menu นั้น ลองคลิกขวา เลือก linkage ดู จะเห็นว่า ผมได้ตั้งชื่อ Identify ว่า mc_menu
สาเหตุที่ผมต้องตั้งชื่อตรงนี้นั้น เพราะว่าผมสามารถอ้างถึง movieclip นี้ได้โดยไม่จำเป้นต้องจับมันมาวางใน stage ก่อน


** ตัวอย่างตามในโค้ด
    _root.attachMovie("mc_menu","menu_"+i,i);
//สร้าง movieClip ตัวใหม่ ถ้า i มีค่าเท่ากับ 2 MovieClip ตัวใหม่ก็จะมีชื่อว่า menu_2
//โดย movie ที่สร้างขึ้นนั้น จะเป็นตัวเดียวกับที่เราตั้งชื่อไว้ใน Identify


โค้ด
_root["menu_"+i].txtUrl = link[ i ];
ตัวนี้ ผมใช้เพื่อแสดงข้อความ โดยนำข้อความจาก array มาใส่ในตัวแปร txtUrl ที่เราสร้างขึ้นเองไว้ภายใน MovieClip ตัวนั้น

โค้ด
_root["menu_"+i].onRelease = function(){
   getURL(this.txtUrl);
}

ตัวนี้ ผมใช้เพื่อเมื่อมีการคลิกที่ปุ่มนั้น ให้มันลิ้งไปยังurl ที่ txtUrl ของตัวที่ถูกกดเก็บค่าเอาไว้
(ใช้ this เพื่อหมายถึง ตัวปุ่มที่ถูกกด และ .txtUrl เพื่อเอาค่าของ txtUrl มาใช้ )


อันนี้ คือตัวที่ผมแนบไปครั้งที่แล้วนะครับ ถ้าเข้าใจแล้ว ค่อยอ่านช่วงต่อไป อืมมมมห์
« แก้ไขครั้งสุดท้าย: 07 พ.ค. 2008, 22:24 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
อันนี้คือวิธีนึงในการทำแบบที่ผมถามไปตอนแรกนะครับ
คือให้สร้าง array มาอีกตัวควบคู่กัน
แอบอ้าง
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
var txt = ["f0nt", "TFD", "ItemStudio"];
for(i=0;i<link.length;i++){
   _root.attachMovie("mc_menu","menu_"+i,i);
   _root["menu_"+i]._x = 100;
   _root["menu_"+i]._y = 50*i + 25;
   _root["menu_"+i].txtUrl = txt[ i ];
   _root["menu_"+i].txtLink = link[ i ];
   _root["menu_"+i].onRollOver = function(){
      this.gotoAndStop(2);
   }
   _root["menu_"+i].onRollOut = _root["menu_"+i].onReleaseOutside = function(){
      this.gotoAndStop(1);
   }
   _root["menu_"+i].onRelease = function(){
      getURL(this.txtLink);
   }
}

<a href="http://img2.f0nt.com/flash/b6aa689289ec2ed1f42fd4cd26496ace.swf" target="_blank">http://img2.f0nt.com/flash/b6aa689289ec2ed1f42fd4cd26496ace.swf</a>

เดี๋ยวต่อไปจะเอา array 2 มิติ มาใช้แทนวิธีนี้กัน อืมมมมห์
ว่าแต่ผมอธิบายเร็วไปไหมนิ? (เหงื่อแตกพลั่ก)
« แก้ไขครั้งสุดท้าย: 07 พ.ค. 2008, 22:32 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
 เจ๋ง เยี่ยมยอด ++

กรณีตัวอย่างแจ่มๆของคุณ poloh ดูจากสคริป ทำไมต้องทำให้มันยุ่งยากมากมายอย่างนั้น

ผมขออนุญาตขยายแนวคิด และอธิบายนิดหน่อยนะครับ (นี่มันอนุบาลน่ะครับ เผื่อมีคนอื่นไม่ยังไม่เก็ท)

จริงๆเบ็ดเสร็จมันก็แค่ ปุ่มธรรมดา ที่มีลิ้งค์ เราสามารถ ถึกสร้างเอาก็ได้นี่ สามปุ่ม โอะๆ หมูๆ แป๊ะเดียวก็เสร็จ

จากตัวอย่าง หากเราทำเองโดยสร้างเอาเลย ก็แป้ปเดียว ใช่ใหมจ๊ะ

แต่วิธีนี้ จะสามารถ เพิ่ม หรือ ลด ปุ่ม อย่างง่ายดายมากๆ ไดนามิคดีครับ
เหนื่อยตอนแรก ตอนแก้ หรือ นำมาใช้ทีหลังจะสะดวกมาก (ในบางกรณี)

ด้วยสองตัวแปรนี้

โค้ด:
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org"];
var txt = ["f0nt", "TFD", "ItemStudio"];

โค้ด:
หากจะลดเหลือสองปุ่มก็
var link = ["http://www.f0nt.com", "http://www.itemstudio.org"];
var txt = ["f0nt", "ItemStudio"];

โค้ด:
ถ้าเพิ่มก็
var link = ["http://www.f0nt.com", "http://www.thaiflashdev.com", "http://www.itemstudio.org" , "http://www.download.com"];
var txt = ["f0nt", "TFD", "ItemStudio" , "Download"];

ประมาณนั้นครับ เราแก้แค่สองตัวแปรนี้ สคริปก็จะทำงานเองเลยครับ

เพราะตัวสคริปเอง จะนับเองครับว่ามีสมาชิกอาเรย์กี่ตัว
ด้วยสคริปส่วนนี้
แอบอ้าง
for(i=0;i<link.length;i++)


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

ส่วนถ้าเป็นอาเรย์สองมิติก็อาจจะเหลือตัวแปรเดียว จัดการง่ายขึ้น(ไหม)
บันทึกการเข้า

55 + ขอบคุณครับพี่
ไม่ต้องขออณุญาติก็ได้ครับ  ปลื้ม

ช่วยๆกันอธิบายหลายคน จะได้เข้าใจกันทั่วถึง เจ๋ง
บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
ต่อเรื่องการใช้แบบ array 2 มิติ

โค้ด:
var link = [["http://www.f0nt.com","f0nt"],
["http://www.thaiflashdev.com","TFD"],
["http://www.itemstudio.org","ItemStudio"]];
for(i=0;i<link.length;i++){
_root.attachMovie("mc_menu","menu_"+i,i);
_root["menu_"+i]._x = 100;
_root["menu_"+i]._y = 50*i + 25;
_root["menu_"+i].txtUrl = link[i][1];
_root["menu_"+i].txtLink = link[i][0];
_root["menu_"+i].onRollOver = function(){
this.gotoAndStop(2);
}
_root["menu_"+i].onRollOut = _root["menu_"+i].onReleaseOutside = function(){
this.gotoAndStop(1);
}
_root["menu_"+i].onRelease = function(){
getURL(this.txtLink);
}
}

จากข้างบน จะเห็นว่า ผมได้เขียน url กับชื่อไปพร้อมกันเลย
เพื่อป้องกันอาการหลงลืมแบบ เพิ่มที่ตัวนึง แล้วไปลืมเพิ่มอีกตัวนึง

ส่วนการเรียกใช้นั้น ก็เรียกใช้โดยเรียกแบบ
link[ i ][0] ซึ่งจะหมายถึงค่าแรก ของ array ชุดนั้น
(งงไหมครับ ถ้างง ก็ลอง trace ค่าออกมาดูตามก็ได้ จะได้เข้าใจได้ง่ายขึ้น)

 อืมมมมห์ หมดสต๊อคแล้วครับ ขอคืนไม้ให้พี่ ej-sing ต่อเลยครับ
« แก้ไขครั้งสุดท้าย: 14 พ.ค. 2008, 23:08 น. โดย poloh » บันทึกการเข้า

ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ
เดี๋ยวลองนะครับ  :12:ล


ขอบคุณมากๆๆๆๆๆๆ
บันทึกการเข้า

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

ตัวอย่างครับ

<a href="http://img2.f0nt.com/flash/86aa1646eb27b0afe35c1ed21702beba.swf" target="_blank">http://img2.f0nt.com/flash/86aa1646eb27b0afe35c1ed21702beba.swf</a>

จากตัวอย่าง
จะเห็นว่า ตัวสามเหลี่ยม จะหมุนอยู่ในวงกลม (กดหมุน ปล่อยหยุด แรนด้อมด้วยนะ  ยิ้มน่ารัก)
วงกลมจะหมุนอยู่ในสี่เหลี่ยม
พอลากสี่เหลี่ยม มันก็มากันทั้งหมดเลย ทั้งๆที่ยังหมุนอยู่

-เป็นการซ้อนมูวี่คลิป เข้าไปสามชั้น  หมีโหด~
สี่เหลี่ยม เป็นตัวหลัก มีวงกลมอยู่ข้างใน ข้างในวงกลม มี สามเหลี่ยมเก้าอัน

=========================================================
  แบบทดสอบบทที่ 1 ทดสอบการอ้าง Path โดยไม่ใช้ _root นำหน้าชื่อ 
=========================================================

- ให้สั่งหมุนตัวสามเหลี่ยมแบบแรนด้อม 3 ตัว ด้วยการกดปุ่ม ตามตัวอย่าง พอปล่อยปุ่มจึงหยุดหมุน

ข้อบังคับ !!
- ห้ามมี _root หรือ level0 ,level ต่างๆ นำหน้าชื่อ mc ทุกตัว ให้ใช้ this ได้
- เขียนสคริปที่เฟรมแรก ของ Main Timeline เท่านั้น


ทำไฟลแบบทดสอบไว้ให้แล้วครับ
โหลดไฟล์ที่แนบมาด้วย ไปลองทำดูครับ ( ทุกอย่าง สร้างไว้ให้แล้ว แต่ไม่มีสคริป  หมีโหด~ )
ไฟลนี้ทำข้อสอบได้หลายบทเลยครับ  (อิอิ) ใครว่างๆก็ลองดูนะครับ

// ส่งงาน กรุณาแนบไฟลมาด้วยย  หมีโหด~ จะเอามาตรวจ

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



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

- ทำไม บทนี้ ถึงไม่ให้ใส่ _root หน้าชื่อ (วะ) ก็มันเป็น Path แรกสุดที่จำเป็นเลยนี่

คำตอบคือ เป็นการฝึกเล็กๆน้อยๆครับ อ่านตามช้าๆนะครับ มั่วใช้ได้

เพราะบางที บางงาน มูวี่หลักที่ต้องโหลดมูวี่ย่อยๆเข้ามา _root ก็จะเป็น มูวี่หลักครับ

มูวี่ย่อยต่างๆที่มีสคริปที่อ้าง _root อยู่ในตัวอยู่แล้ว จะมีปัญหาแน่นอน จึงมีคำสั่งนี้ mc._lockroot = true
เพื่อมาล๊อค _root ให้เป็นของตัวเอง เพื่อให้สคริปตัวเอง อ้าง _root ของตัวเองได้

แล้ว _root มูวี่หลักก็จะไม่มีเพราะ ล๊อคมาให้มู่วี่ย่อยแล้ว (จำได้วาเป็นเช่นนั้น) แต่ที่แน่ๆคือ มีปัญหาแน่นอน
หาก มูวี่หลักมีการอ้าง _root. บลา บลา บลา  รับรองยุ่งสุดๆเลย
เพราะเคยเจอ(บ่อยๆ) งานที่เป็น อนิเมชั่นเล็กๆ ผสมสคริปถึกๆ
มีการใช้ฟังชั่น อ้างถึงตัวแปรต่างๆ อยู่ใน มูวี่หลักเอง พอไปเฟรมหลังๆ การอ้างก็ต้อง _root.ฟังชั่น นั่นเป็นเรื่องปกติ

แต่พอเราโหลดมูวี่จากภายนอกเข้ามาแล้ว มูวี่ที่โหลดมา มันก็มีสคริป ที่ต้องอ้าง _root ของตัวเองด้วย
ทีนี้ก็ต้องเดือดร้อน ._lockroot = true กันให้วุ่น สคริปในมูวี่ย่อยถึงจะใช้ได้

ที่ซวยน่ะคือสคริปบนมูวี่หลัก อ้าง _root. ก็ไม่มาแล้วววว เพราะ ไปล๊อคอยู่ที่อีตัวโน้น บรรลัยแน่ๆ

---------------------------------------------------------------------------------

วิธีแก้ปัญหาแบบแอดว้านซ์ อย่างง่ายก็สร้าง _global ฟังชั่น และตัวแปร _global  ซึ่งเรียกจากที่ไหนก็ได้ ไม่ต้อง _root

แหม่่ เทพจริงๆ แต่ บางทีเฉพาะที่เฉพาะทาง มันก็ไม่เหมาะไม่ควร ยุ่งยากเปล่าๆ

เราก็แก้ด้วยวิธีง่ายๆโคตรๆ

การ ไม่ต้องอ้าง _root ในมูวี่ย่อยๆ ไง
พยายามหาทางอ้าง path ให้มันทำงานในตัวมันเองให้ได้ โดยไม่มี _root. นำหน้า path
พอโหลดมามูวี่หลัก สคริปต่างๆมันก็ยังทำงานได้เพราะ มันไม่ต้องอ้าง _root ในตัวเอง
ทีนี้ก็สบาย ไม่ต้อง _lockroot กันให้ปวดกบาลแล้วครับ เฮ้อออววววว

อย่าลืมทำบททดสอบกันนะจ๊ะ  ลันล้า
« แก้ไขครั้งสุดท้าย: 15 พ.ค. 2008, 00:25 น. โดย ej_sing » บันทึกการเข้า

จ้ะ เดี๋ยว จะส่งนะจ้ะ 

เอ้า เล่นกันเอง ซะฉิบ แล้วเรา น้าแอด  เอือม
บันทึกการเข้า

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


ครั้งนี้ขอเข้าสอบด้วยครับ  ไหว้
บันทึกการเข้า

เราจะต้องการอะไรมากมายไปกว่า อะไรมากมาย
หน้า: 1 ... 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 ... 31
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!