สอนโหลด swf ทีจ้ะห์

เริ่มโพสต์โดย Layiji, 22 มี.ค. 2007, 22:02 น.

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

หนุ่ม

โอว..เข้าใจแล้วครับ งงมาตั้งนาน ขอบคุณป๋าครับ :12:
Reading Learning & Sharing

เต่ามาก

อ่านจู๋นี้แล้วสับสนชีวิต  :08:

Layiji

นักเขียนการ์ตูนรายปี

saa3

_root.เฟริน.หนวดโง้ง.gotoAndPlay("หนวดแด๊นซ์");

Layiji

สามเอ็งอ่านนี่แล้วอธิบายเป็นภาพหน่อยแซะ
นักเขียนการ์ตูนรายปี

จักรี

อ้างคำพูดจาก: pinocchio เมื่อ 26 มี.ค. 2007, 20:59 น.
โอว..เข้าใจแล้วครับ งงมาตั้งนาน ขอบคุณป๋าครับ :12:

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

I’Boss

เขายังไม่เป็นวัวเลยครับ  :31:
지금은 소ë...€ì‹œëŒ€ , 앞으로ë,, 소ë...€ì‹œëŒ€ , 영원히 소ë...€ì‹œëŒ€

จักรี

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

หนุ่ม

อ้างคำพูดจาก: จักรี เมื่อ 27 มี.ค. 2007, 19:18 น.
บอสตกข่าววะ พี่หนุ่ม เขาบวก ให้คนอื่นตั้งแต่เป็นเหาแล้ว........
แหม....  :16:
Reading Learning & Sharing

Layiji

เอ่อ พอดีกลับไปอ่านส่วนที่เป็นเรื่องของ function น่ะครับ
http://f0nt.com/forum/index.php?topic=8614.msg465333#msg465333

ใครเข้าใจอธิบายเป็นภาพให้ทีครับ :08:
นักเขียนการ์ตูนรายปี

heart

ถ้าเป็นผม ผมจะเขียน xml ขึ้นมาตัวนึง เก็บประวัติ และรูปของแต่ละคน

พอจะแสดงใคร ก็ไปดึง jpg ของคนนั้นที่อ่านได้จาก xml มาแหะ และตัวหนังสือมาแปะ

I’Boss

เรื่องนี้ผมก็ยังไม่ค่อยเข้าใจแฮะ
지금은 소ë...€ì‹œëŒ€ , 앞으로ë,, 소ë...€ì‹œëŒ€ , 영원히 소ë...€ì‹œëŒ€

กากก่อเกรียนนู้บ

อ้างคำพูดจาก: Layiji เมื่อ 28 มี.ค. 2007, 12:06 น.
เอ่อ พอดีกลับไปอ่านส่วนที่เป็นเรื่องของ function น่ะครับ
http://f0nt.com/forum/index.php?topic=8614.msg465333#msg465333

ใครเข้าใจอธิบายเป็นภาพให้ทีครับ :08:

- -* พร้อมรึยังครับ แหะๆ
ไม่รู้ว่าจะใช่อย่างที่พี่เลย์ต้องการหรือเปล่านะครับ

ป.ล. Text ล้วนครับ  :42:

ขออนุญาตยกมานะครับ
อ้างอิงfunction McIn() {
   this.mmc.onEnterFrame = function() {
      this.nextFrame();
   };
}
function McOut() {
   this.mmc.onEnterFrame = function() {
      this.prevFrame();
   };
}
b2.mmc = service2;
b2.onRollOver = McIn;
b2.onRollOut = McOut;
จากตัวอย่าง ผมขออธิบายตัว onRollOver, onRollOut ก่อนนะครับ

onRollOver, onRollOut คือ Built-in Function หรือฟังก์ชั่นที่มีการกำหนดการใช้งานมาก่อนแล้ว และเป็นของโปรแกรม Flash ครับ หรือบางทีจะเรียกว่า Event เพราะว่า ฟังก์ชั่นเหล่านี้จะทำงานเมื่อมีการกระทำตามเงื่อนไข หรือตามเหตุการณ์บางอย่าง เช่น

onRollOver ฟังก์ชั่นนี้จะทำงานเมื่อเอาเมาส์ไปวางบนวัตถุที่กำหนดครับ

แล้วทีนี้จากฟังก์ชั่นที่ว่า เราสามารถกำหนด/ตั้งการทำงานได้ 2 แบบใหญ่ๆ ครับ คือ
1. ใส่มันตรงๆ บนวัตถุเลย เช่น
on(press){ .... }
2. ใส่ผ่าน Instance Name บนเฟรมของ Timeline เช่น
mc1.onPress = function(){ .... }

มาถึงส่วนของฟังก์ชั่นแล้วครับ

ในแบบข้อ 2 ที่ผมว่าไปนั้น จะสามารถทำได้อีก 2 แบบย่อยก็คือ
2.1 กำหนดฟังก์ชั่นการทำงานพร้อมกับกำหนด Event
mc1.onPress = function(){ .... }
และ
2.2 กำหนดฟังก์ชั่นการทำงานก่อน แล้วจึงกำหนด Event และฟังก์ชั่น
function doOnPress(){ .... }
mc1.onPress = doOnPress;


โดยของพี่เลย์เป็นแบบที่ 2.2 ครับ
ซึ่งแบบ 2.2 นั้นจะดีตรงที่ว่า เราเขียนฟังก์ชั่นแค่ครั้งเดียว แล้วสามารถให้ปุ่มอื่นเรียกใช้ได้ทันที
แต่เราก็ต้องเขียนการทำงานให้ครอบคลุมด้วยนะครับ

ส่วนการใช้ this ขออธิบายแบบง่ายๆ ก่อนนะครับ
- this เอาไว้ ชี้เฉพาะไปเลยว่า เราต้องการสั่ง ตัวนี้/วัตถุชิ้นนี้ (นั่นคือวัตถุที่เราใส่ Script อยู่) ให้ทำงาน
- this เอาไว้ชี้เฉพาะตัวแปร ณ วัตถุ/ฟังก์ชั่นนี้ เท่านั้น

ในเงื่อนไขหลัง ถ้า ชื่อตัวแปรเหมือนกัน แต่อยู่ต่าง Movie Clip กันเช่น อยู่ที่ Timeline หลัก กับอยู่ที่  Movie Clip จะไม่มีปัญหาเท่าไหร่ครับ เพราะเวลาเราจะเรียกใช้นั้น ก็ต้องทำการเรียก _root, _parent อยู่แล้ว

แต่ถ้าชื่อตัวแปรเหมือนกัน อยู่ใน Timeline ชุดเดียวกัน จะเกิดปัญหาครับ
ขอยกตัวอย่าง

var count = 0;
function doCount(){
  var count = 0;
  count += 2;
  trace("count in function: "+count);
}
doCount();
count += 5;
trace("count on timeline: "+count);


สังเกตว่า ชื่อตัวแปรเหมือนกัน แต่อยู่ในฟังก์ชั่นตัวนึง และนอกฟังก์ชั่นตัวนึง
ทีนี้ผลลัพธ์ที่ออกมาจากการรันแล้ว จะได้ตามนี้ครับ
อ้างอิงcount in function: 2
count on timeline: 5

ที่ count in function ได้เป็น 2 นั่นเพราะว่า ในฟังก์ชั่นมีการประกาศตัวแปรไว้ครับ
เมื่อเราสั่ง count += 2 ในบรรทัดถัดไป ตัวโปรแกรมจึงรู้เอาเองว่า ต้องใช้ count ตัวล่าสุดที่ประกาศในฟังก์ชั่น ค่าตัวแปรจึงเพิ่มขึ้นเป็น 2 ครับ
แต่เมื่อจบฟังก์ชั่นแล้ว ตัวแปรที่พึ่งประกาศนี้ จะหายไปเลยครับ
เพราะฉะนั้นเมื่อถึงบรรทัด count += 5
โปรแกรมจึงดึงเอาค่าตัวแปร count ตัวแรก มา +5 จึงได้ออกมาตามผลลัพธ์ข้างบนครับ

ถ้าเราทำงานไป จะเกิดอาการ งง เองเลยครับ (ผมเคยเจอแล้ว)
เพราะฉะนั้น อาจแก้ไขโดย
var count = 0;
function doCount(){
  var count = 0;
  this.count += 2;
  trace("count in function: "+count);
}
doCount();
count += 5;
trace("count on timeline: "+count);

เมื่อต้องการให้เพิ่มค่าตัวแปร count ในฟังก์ชั่น

หรือ

var count = 0;
function doCount(){
  var count = 0;
  _root.count += 2;
  trace("count in function: "+count);
}
doCount();
count += 5;
trace("count on timeline: "+count);


เมื่อต้องการเพิ่มค่าตัวแปร count ที่อยู่นอกฟังก์ชั่น

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

พวก _root, this, _parent ต้องอาศัยความเคยชินซักหน่อยครับ
- -"

ไม่รู้จะตรงประเด็นที่พี่เลย์ต้องการหรือเปล่านะครับ

จักรี

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

จักรี

#44
อ้างคำพูดจาก: poloh เมื่อ 22 มี.ค. 2007, 23:25 น.
แต่ให้ระวังปัญหานึงคือ

ถ้าเรามีการเรียกใช้ _root ที่ตัวลูก

มันจะไปหมายถึง _root ที่ตัวแม่ด้วย

แต่สามารถ ป้องกันปัญหานี้โดยการ
lock ไม่ให้ _root ของตัวลูกมาถึงแต่แม่
ด้วยการใส่
_lockroot = true
ที่ timeline แรกของตัวลูก




เอ๊ะ ทำไม ผม ลองใส่ ดูแล้ว  มันทำให้เวลา ใช้ตัวแม่เรียก  ตัวลูกมาเล่น      mc ใน ตัว ลูก  ไม่ทำงาน เลยครับ   แต่ถ้า รันตัวลูกอย่างเดียวก็ไม่มีปัญหา 

โอเคครับ แก้ปัญหาได้แล้ว  แก้โดยไม่ใส่ _lockroot = true    แต่ใช้การ อ้างเอาตั้งแต่mcตัวแม่ยัน mc ตัวลูก  :08: 



และขอถามอีกข้อนึง

  เมนูในตัวลูก  สามารถสั่ง mc ในตัวแม่ได้มั้ยครับ  ?



แก้ปัญหาได้แล้วครับ  ใช้หลักการณ์เดียวกัน  ไม่น่าโง่เลย  :08:


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

SMF 2.1.7 © 2026, Simple Machines