ฟอนต์ฟอรั่ม

F0NT Community (เก่า) => ห้องคอม => ห้องแฟลช => โพสต์ถูกเริ่มโดย: daromoja เมื่อ 09 มิ.ย. 2008, 18:02 น.

ชื่อเรื่อง: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่ใน MC
โพสต์โดย: daromoja เมื่อ 09 มิ.ย. 2008, 18:02 น.
>> ต้องเขียนโคดยังไงคับถึงจะสามารถ เปลี่ยนสี font ของ Dynamiic text ที่อยู่ใน MC
โดยพอคลิ๊กเลือกที่ MC ไหน  ก็สามารถเปลี่ยนสีของ font ใน MC นั้นได้  เหมือนภาพประกอบ
ที่ให้มาข้างล่างคับ

     ผมเพิ่งหัดเขียน Action Script เลยโง่หน่อย  ถ้ามีตัวอย่างที่ผมวสมารถเรียนรู้ได้  ผมก็
ขอความกรุณาพี่ๆทุกคนด้วยนะคับ  :02:

(http://img2.f0nt.com/12/d593d109049a34289b13639a38affde8.jpg)
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 10 มิ.ย. 2008, 16:33 น.
 :44: ช่วยหน่อยนะคับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 10 มิ.ย. 2008, 23:07 น.
เริ่มจากตรงไหนดีครับ
ทำถึงตรงไหนแล้ว
ติดขัดตรงไหนครับ
หรือยังไม่ได้เริ่มเลย
หรือว่าอยากเอาแนวทางสคริป
หรือจะให้ทำให้เลยครับ
ฯลฯ

http://img2.f0nt.com/flash/0c971aa505329a95b9d8877feca7e224.swf
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 11 มิ.ย. 2008, 08:59 น.
ขอบคุณ พี่ ej_sing  มากๆๆ คับ
ถ้ามีคัวอย่างไฟล์กับอธิบายโคดเพิ่ม  จะเปงพระคุณอย่างยิ่งคับ
ตอนนี้ผมเขียนไฟล์เปง AS 2 อยู่อ่ะคับ..
..........................................ขอบคุงค้าบบบบบบบบบบบบบบบบบบบบบบบบบ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 11 มิ.ย. 2008, 11:35 น.
ตอบไม่ตรงคำถามแฮะ พิมพ์ภาษาไทยให้ถูกต้องกว่านี้อีกนิดครับมันขัดตา  :33:

เริ่มด้วยการโหลด colorpicker component ไปติดตั้งซะก่อน (ถ้ายังไม่มี )
ผมใช้ตัวนี้อ้างอิงโค้ดนะครับ

เริ่มด้วยการ สร้าง listener object มาตรวจจับการเลือกสี
เพื่อเอาค่าสีออกมาส่งให้ mc ที่มี Dynamic text อยู่ด้านใน


var my_fmt:TextFormat = new TextFormat();
var pickerListener:Object = new Object();           // สร้าง listener object มาตรวจจับการเลือกสี
pickerListener.change = function(cl:Object) {      // เมื่อมีการเปลี่ยนแปลงใดๆกับ event นี้
   codeColor = "0x"+cl.getRGB();                   // ดึงค่าสีออกมาส่งให้ตัวแปร
   my_fmt.color = codeColor;                        // เซ็ทค่าสีให้ TextFormat ก่อน
   mc.txt.setTextFormat(my_fmt);                 // แล้วก็ค่อยส่งไปที่ mc ที่มี Dynamic text อยู่ด้านใน
};
clp.addListener(pickerListener);                         // เอา event มาตรวจจับกับตัว colorpicker ซึ่งในที่นี้ตั้งชื่อว่า clp


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

อธิบายได้ว่า
เมื่อมีการคลิกเลือกสีที่ colorpicker
ก็จะส่งค่าสีนั้นๆไปให้กับ  Dynamic text ที่อยู่ด้านใน mc

พอเข้าใจนะครับ

ส่วนตัว colorPicker2 ติดตั้งเฉพาะไฟล .mxp ก็ได้ครับถ้าใช้แค่ธรรมดา
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 11 มิ.ย. 2008, 11:52 น.
 :25:ขอบคุณมากครับ  ถ้าผมติดตรงไหนยังไง
รบกวนถามอีกได้หรือเปล่าคัรบ   
..................................... :45:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 11 มิ.ย. 2008, 12:49 น.
 :33:ขอรบกวนอีกนิดนึงนะคับ  ถ้าผมจะทำแบบตัวอย่างแรกที่พี่ให้มา 
แบบเลือกได้ว่าจะเปลี่ยนสี mc อันไหนต้องทำยังไงครับ
ตัวอย่างเพิ่มจะขอพระคุณอย่างยิ่งครับ............................. :46:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 11 มิ.ย. 2008, 13:29 น.
อยากเข้าใจวิธีการ
หรืออยากเอาไปใช้เลยครับ

ถ้าอยากเข้าใจ เพื่อที่จะเอาไปต่อยอดทำงานอื่นๆได้ (ด้วยความเข้าใจ และสร้างขึ้นเอง ไม่ใช้ copy แล้ว Modify)
ลองทำโค้ดที่ให้หรือยังครับ แล้วติดตรงไหน ไม่เห็นถามสักที
เอามาโพสเลยครับ จะได้ตอบเป็นส่วนๆไป (เท่าที่ผมจะสามารถ)

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

อ้างอิง
var my_fmt:TextFormat = new TextFormat();
var mc:MovieClip;
var pickerListener:Object = new Object();
pickerListener.change = function(cl:Object) {
   codeColor = "0x"+cl.getRGB();
   my_fmt.color = codeColor;
   mc.txt.setTextFormat(my_fmt);
};
clp.addListener(pickerListener);
function choose(mc:MovieClip) {
   for (var i:Number = 1; i<=7; i++) {
      _root["txt"+i].gotoAndStop(1);
   }
   mc.gotoAndStop(2);
}
for (var i:Number = 1; i<=7; i++) {
   _root["txt"+i].onRelease = function() {
      _root.mc = this;
      choose(this);
   };
}

http://img2.f0nt.com/flash/0c971aa505329a95b9d8877feca7e224.swf

ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ไอ้เบิร์ด เมื่อ 12 มิ.ย. 2008, 00:57 น.
งั้นผมถามต่อเลยละกันครับ ถ้าผมต้องการทำให้ mc ที่เป็น solid เปลี่ยนสีได้ต้องทำมั่งอะครับ ใช้โคดตัวเดียวกับที่ใช้เปลี่ยนสีในตัวทดลองพิมพ์ได้รึเปล่าครับ (เอาแค่หลักคร่าวๆก่อนก็ได้ครับ เดี๋ยวผมไปมั่วต่อเองก็ได้ครับ)
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: iannnnn เมื่อ 12 มิ.ย. 2008, 00:58 น.
โอ้โห เห็นแล้วก็ขอบคุณแทนครับ
เพราะเป็นเรื่องที่ผมเองตอบไม่ได้จริงๆ
ขอบคุณครับน้าแอ๊ด :46:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ไอ้เบิร์ด เมื่อ 12 มิ.ย. 2008, 01:02 น.
เหมือนเป็นเป็นห้อง คุณถามน้าแอ๊ดตอบ เลย ว่าเมื่อไหร่จะถึงคิวน้าแอ๊ด เปิดห้องรับคำถามอย่างเป็นทางการ บ้างหละครับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: Layiji เมื่อ 12 มิ.ย. 2008, 01:05 น.
สุดยอดจริงๆครับ  :25:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 12 มิ.ย. 2008, 01:10 น.
โอว ปั่นกันกระจุย มีคนตัดหน้าคุณตั้ง 2 คนแน่ะ


อ้างคำพูดจาก: เบิร์ด-[Hideric]-๒๑ เมื่อ 12 มิ.ย. 2008, 00:57 น.
งั้นผมถามต่อเลยละกันครับ ถ้าผมต้องการทำให้ mc ที่เป็น solid เปลี่ยนสีได้ต้องทำมั่งอะครับ ใช้โคดตัวเดียวกับที่ใช้เปลี่ยนสีในตัวทดลองพิมพ์ได้รึเปล่าครับ (เอาแค่หลักคร่าวๆก่อนก็ได้ครับ เดี๋ยวผมไปมั่วต่อเองก็ได้ครับ)

ตอบกรณีใช้ colorPicker Component

var my_fmt:TextFormat = new TextFormat();
var pickerListener:Object = new Object();           // สร้าง listener object มาตรวจจับการเลือกสี
pickerListener.change = function(cl:Object) {      // เมื่อมีการเปลี่ยนแปลงใดๆกับ event นี้
   codeColor = "0x"+cl.getRGB();                       // ดึงค่าสีออกมาส่งให้ตัวแปร
   my_color = new Color(my_mc);                   
   my_color.setRGB(codeColor);                       // แล้วก็ค่อยส่งไปที่ mc นั้นๆ
};
clp.addListener(pickerListener);  
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 12 มิ.ย. 2008, 02:33 น.


//เบิ้ลละกัน ให้ลองคลำหาเองดูสักนิดเพื่อความรู้ของท่าน (ใจดำชะมัด)  :35:
ทีนี้ก็จะมาอธิบายวิธีคร่าวๆ  :33:

จากคำถามแรก
"ต้องเขียนโคดยังไงคับถึงจะสามารถ เปลี่ยนสี font ของ Dynamiic text ที่อยู่ใน MC
โดยพอคลิ๊กเลือกที่ MC ไหน  ก็สามารถเปลี่ยนสีของ font ใน MC นั้นได้"

ผมก็มั่วๆ คิดไป ทำไป ( 85.372% เปิด help ..... ความลับนะเนี่ย  :07: )
แถมวิ่งไปหา colorPicker Component เจ๋งๆมาให้ใช้ง่ายๆ ทั้งที่ไม่เคยใช้ ก็เลยใช้เป็นแถมดีด้วย

เริ่มแรก เราก็คิดก่อนว่า mc ที่มี txt ข้างในทั้งหมดจะมีกี่ตัว เดาไว้ก่อนว่าหลาย
ถ้ามีหลายตัว เราก็ต้องคิดถึงการวนลูปไว้เลย เลี่ยงไม่ได้
เมื่อมีการวนลูป ชื่อ mc ใดๆที่ต้องการวน ควรจะเรียงกันด้วยตัวเลข mc1 , mc2 , mc3,....n

ต่อมา สร้าง mc ที่มี dynamic txt  กี่ตัวก็ตามใจ แต่ dynamic txt ทุกตัวที่อยู่ใน mc ต้องชื่อเดียวกัน
ในที่นี้ผมให้ชื่อว่า txt เมื่อเวลาอ้างชื่อก็จะเป็น
mc1.txt
mc2.txt
mc3.txt
.... n
เวลาลูปจะได้ง่าย

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

ทีนี้ทำยังไงให้เมื่อคลิก mc ใดๆ แล้วสคริปถึงจะรู้ว่าเราเลือก mc ตัวนี้อยู่นะ ก็...

อ้างอิงvar mc:MovieClip;      //ประกาศตัวแปรไว้ตัวนึง ให้มันเป็นตัวรับค่าการเลือก mc ของเรา

mc1.onRelease = function (){      //สร้าง event Release เมื่อคลิกที่ mc
     mc = this                              // ให้ตัวแปรนั้นรับค่าว่ามันคือ mc1
}
mc2.onRelease = function (){      //สร้าง event Release เมื่อคลิกที่ mc
     mc = this                              // ให้ตัวแปรนั้นรับค่าว่ามันคือ mc2
}

.... โอ๊ยยยยย มี mc สัก 20 ตัวไม่พิมพ์กันเมื่อยเลยเรอะ คำสั่งก็เหมือนกันหมด

ใช้วิธีนี้ ในการสร้าง event ที่เหมือนๆกัน (จริงๆถ้าแอดว๊านซ์กว่านี้เขาใช้คลาสกันเลย พอดีไม่เป็น....... :08:)

อ้างอิงfor (var i:Number = 1; i<=20; i++) {
   _root["mc"+i].onRelease = function() {
      mc = this;
   };
}

รันครั้งเดียวพอ ก็จะสร้างคำสั่งทั้ง 20 ตัวได้แล้ว
ลองประยุกต์ใช้ครับ

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

ทีนี้เราก็บอกสคริปได้แล้ว ว่าเราเลือก mc ตัวไหนอยู่ ต่อไปก็ เซ็ทค่าสี
วิธีส่งค่าสีให้ dynamic txt
อ้างอิง
var my_fmt:TextFormat = new TextFormat();     //สร้าง TextFormat(); ซึ่งสามารถเซ็ทค่า property ได้ทุกอย่าง
my_fmt.color = 0xFF0000                                //ในที่นี้เราจะเซ็ทสีแดง
mc.txt.setTextFormat(my_fmt);                        // ก็เซ็ท txt ใน mc ที่เลือกไว้ ด้วยค่า my_fmt.color = 0xFF0000

กรณีนี้ ถ้าเราเลือก mc8 ไว้
mc.txt.setTextFormat(my_fmt);  ก็คือ mc8.txt.setTextFormat(my_fmt);  dynamic txt ก็จะเป็นสีแดงแล้ว

เพราะ mc = this; จากลูปคำสั่งด้านบนไง
ไม่งงนะ

ต่อ เรามีโค้ดเซ็ทสีแล้ว  ทีนี้อยากจะส่งค่าสีโดยการเลือก colorPicker ล่ะ
เราก็มาดูว่า ไอ้ คอมโปแนนท์ colorPicker เนี่ย มันทำงานยังไง ส่งค่าออกมายังไง
ดูจากตัวอย่างได้ความว่า

อ้างอิงvar pickerListener:Object = new Object();         //สร้าง listener Object
pickerListener.change = function(cl:Object) {     //ตรวจจับการเปลี่ยนแปลง  เมื่อมีการเปลี่ยนแปลง
   codeColor = "0x"+cl.getRGB();                  //ให้ดึงค่าสีที่เลือก มาส่งให้ตัวแปร codeColor
   my_fmt.color = codeColor;                       //กลับไปเอาโค้ดเซ็ทสีมาใส่ในนี้
   mc.txt.setTextFormat(my_fmt);                // ส่งค่าสีเรียบร้อย
};
clp.addListener(pickerListener);                      //สั่งให้ event listener ไปตรวจจับเหตุการณ์กับตัว colorPicker ซึ่งชื่อว่า clp


เท่านี้เมื่อมีการเปลี่ยนแปลงใน colorPicker มันก็จะส่งค่าสีให้ mc ที่เราเลือกอยู่ครับผม  :22:

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


ทีนี้ เพิ่มลูกเล่นเล็กน้อย โอ๊ยยยยย ว่างมากเรอะเนี่ยตู  :08:

- พิมพ์เพิ่มได้ เปลี่ยนแปลงได้ เลือก mc ไหน พิมพ์อันนั้น
- สีไม่เปลี่ยนขณะพิมพ์
- สีของ colorPicker ตรงกับ mc ที่เลือก

http://img2.f0nt.com/flash/6e405c69062798f08c1108bc0607aa13.swf

สคริปทั้งหมด ยุ่บยั่บเลย  :08:

var my_fmt:TextFormat = new TextFormat();
var mc:MovieClip;
var pickerListener:Object = new Object();
pickerListener.change = function(cl:Object) {
   codeColor = "0x"+cl.getRGB();
   my_fmt.color = codeColor;
   mc.txt.setTextFormat(my_fmt);
   lockColor();
};
clp.addListener(pickerListener);
inp.onChanged = function() {
   mc.txt.text = this.text;
};
function choose(mc:MovieClip) {
   for (var i:Number = 1; i<=9; i++) {
      _root["txt"+i].gotoAndStop(1);
   }
   mc.gotoAndStop(2);
}
for (var i:Number = 1; i<=9; i++) {
   _root["txt"+i].onRelease = function() {
      _root.mc = this;
      choose(this);
      inp.text = mc.txt.text;
      lockColor();
      clp.color = codeColor;
   };
}
function lockColor() {
   fmt = mc.txt.getTextFormat();
   codeColor = "0x"+fmt.color.toString(16);
   mc.txt.textColor = codeColor;
}


อธิบายยยยยยยย

อ้างอิง
var my_fmt:TextFormat = new TextFormat();
var mc:MovieClip;
var pickerListener:Object = new Object();
pickerListener.change = function(cl:Object) {
   codeColor = "0x"+cl.getRGB();
   my_fmt.color = codeColor;
   mc.txt.setTextFormat(my_fmt);
   lockColor();                                  //เพิ่มเติมตัวล๊อคค่าสีของ dynamic txt นั้นๆ
};
clp.addListener(pickerListener);

//เพิ่มเติมตัวพิมพ์เพิ่ม แก้ไข โดยข้อความเดิมยังอยู่

inp.onChanged = function() {               //เมื่อ input txt มีการเปลี่ยนแปลง (พิมพ์) ให้ส่งค่าไปที่ dynamic txt ที่เลือกอยู่
   mc.txt.text = this.text;                 
};

//ส่วนนี้เป็นฟังชั่นแสดงผลกรอบสีแดงให้รู้ว่าเราเลือกอยู่นะ โดย mc แต่ละตัวมีสองเฟรม
//เฟรมแรกไม่มีกรอบ เฟรมสองมีกรอบแดง

function choose(mc:MovieClip) {                      //ฟังชั่นนี้จะส่งกากิวเม้นต์เป็น mc ตัวที่เลือก โดย
   for (var i:Number = 1; i<=9; i++) {         // ให้ mc ทุกตัวกลับไปเฟรมแรกที่ไม่มีกรอบ
      _root["txt"+i].gotoAndStop(1); 
   }
   mc.gotoAndStop(2);                              // ยกเว้นตัวที่เลือก ให้แสดงผลเฟรมสอง (กรอบแดง)
}


for (var i:Number = 1; i<=9; i++) {                   //อันนี้ลูปสร้าง event กดเลือก mc ใดๆ ถ้าไม่ทำแบบนี้ ก็ต้องพิมพ์คำสั่งกันอ้วกแตก
   _root["txt"+i].onRelease = function() {
      _root.mc = this;
      choose(this);                                   // รันแสดงผลกรอบแดงตัวที่เลือก
      inp.text = mc.txt.text;                      //ดึง text เก่าไปแสดงผลที่ input txt
      lockColor();                                    //ล๊อคค่าสีเดิมไว้
      clp.color = codeColor;                     //ดึงค่าสีเดิมมาส่งให้ colorPicker แสดงผลสีเดิมด้วย
   };
}


function lockColor() {                                        //ฟังชั่นล๊อคค่าสีเดิมของ dynamic txt ที่เลือก
   fmt = mc.txt.getTextFormat();                    //ดึงค่า TextFormat(); ทั้งหมด
   codeColor = "0x"+fmt.color.toString(16);     //เอาค่าสีที่ดึงมาได้ ส่งไปตัวแปร codeColor
   mc.txt.textColor = codeColor;                     //เซ็ทค่าสีเดิมไว้ก่อนกันเหนียว อิอิ
}


อ่ะ ดูดดดดดดดดดด  :27: :27: :27: :27: :27:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: iannnnn เมื่อ 12 มิ.ย. 2008, 02:42 น.
:07c:+
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 12 มิ.ย. 2008, 08:21 น.
ขอบคุณน้าแอ๊ดมากครับ........................ :45:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 12 มิ.ย. 2008, 10:22 น.
อ่านให้เข้าใจแล้วลองทำตามด้วย
เอางานมาโชวด้วยนะครับ มีดัดแปลงด้วยล่ะ อย่า copy แล้ว modify อย่างเดียว
ถ้าไม่เอามาลง งานหน้ามาถามจะไม่ตอบเลยด้วย  :23:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 12 มิ.ย. 2008, 14:31 น.
เสร็จแล้วครับ  แต่ไอ้ที่ผมเพิ่มเข้ามาใหม่ดิ  มีบั๊คตรึม ส่งงานก่อนละกันครับ :03:

http://img2.f0nt.com/flash/f50889316666f5fc2f6a0df45986b196.swf

พอโอเคป่าวคับพี่แอ๊ด   :02:

>> แต่ไอ้ที่เพิ่มเข้ามาใหม่นี่ดิ  มากันเป็นตับเลย(ไม่ใช่กระสือนะ)
บั๊คน่ะคับ อย่างแรก  ตอนเปลี่ยน Font **พอพิมพ์เพิ่มอีก มันกลับเป็น  Font เดิมที่ตั้งดีฟอลใน dynamic text อ่ะคับ 
                           (ผมลงสคริปใน combobox เลย  มั่วเอาคับ  เหอๆๆ )

            อย่างต่อมา  คือตอนที่เลือก mc ตัวไหน  เคอเซอร์ก็จะไปที่บรรทัดของมัน(อันนี้ผมดทำไม่ถูก  อายจัง :22:)

......ถ้ามีอะไรสอนเพิ่มเติมผมพร้อมเรียนรู้เสมอครับ .....
...........................................มือใหม่อย่างผมขอบคุณมากคับ (โดยเฉพาะ อนุบาล ASที่พี่แนะนำมา)
                       
         **   ระวังนะครับ  ผมพร้อมจะกวนพี่อยู่เสมอ...อิอิอิ  :12:
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: oottee เมื่อ 12 มิ.ย. 2008, 19:25 น.
เข้ามางงครับ......
เห็นที่จะต้องเริ่มศึกษาซะที
ซื้อหนังสือมากองเป็นปีแล้ว......

หวัดดีน้าแอ๊ดด้วยครับ อิอิ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 12 มิ.ย. 2008, 19:51 น.
โอเค งาม แต่สคริปคงจะเละพอสมควรแล้วมั๊ง  :08:

function lockColor() {                                        //ฟังชั่นล๊อคค่าสีเดิมของ dynamic txt ที่เลือก
   fmt = mc.txt.getTextFormat();                    //ดึงค่า TextFormat(); ทั้งหมด
   codeColor = "0x"+fmt.color.toString(16);     //เอาค่าสีที่ดึงมาได้ ส่งไปตัวแปร codeColor
   mc.txt.textColor = codeColor;                     //เซ็ทค่าสีเดิมไว้ก่อนกันเหนียว อิอิ
}

ฟังชั่นนี้คือ ล๊อคค่าสี ตอนเลือกไปเลือกมาน่ะแหล่ะครับ

เอามาประยุกต์ ให้มันล๊อคค่าฟ้อนต์ที่เลือกไว้ด้วย

function lockFont() {                                       //ฟังชั่นล๊อค font เดิมของ dynamic txt ที่เลือก
   ft = mc.txt.getTextFormat();                        //ดึงค่า TextFormat(); ทั้งหมด
   oldFont = ft.font                                         //เอาฟ้อนต์ที่ดึงมาได้ ส่งไปตัวแปร oldFont
   mc.txt.font = oldFont;                                 //เซ็ทฟ้อนต์ไว้ก่อนกันเหนียว อิอิ
}

อยากล๊อกตอนไหน ก็เอามันไปวางไว้ lockFont()

และ เขียนสคริปที่เฟรมดีกว่านะครับ ฝึกไว้ๆ ตอนจัดการ ง่ายกว่าหน่อยนึง
เอาสคริปที่เพิ่มเติมมาดูหน่อยครับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 13 มิ.ย. 2008, 09:31 น.
**มาแล้วคับ  ตรวจงานเร็วจิงๆ(เกือบส่งไม่ทัน)   :08: 
โคดส่วนที่เหลือ  ที่ทำเพิ่มออกจะถึกๆ  :04: ซักหน่อยนะคับ  ผมมั่วเอา อิอิอิ
ลูปหรือเลิฟไม่มีให้เห็นกันเลย(อ่อนด้อยจิงตู)  ยังไงก็ของคำชี้แนะด้วยละกันคับ.... :46:

**นี่เป็นส่วนของ text input



// textShow เป็น Dynamic Text คับ
// text_mc1,text_mc1  เป็น MC คับ
// ----(อธิบายไม่ค่อยเป้นเลยตู.... :08:)

//----------text input 1 ----

b1.onPress = function() {
text_mc1.textShow.text = t1.text;
};
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if (Key.getCode() == Key.ENTER) {
text_mc1.textShow.text = t1.text;
}
};
Key.addListener(keyListener);


t1.onChanged = function(){
text_mc1.textShow.text = t1.text;

}
//----------text input 2 ----
b2.onPress = function() {
text_mc2.textShow.text = t2.text;
};
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if (Key.getCode() == Key.ENTER) {
text_mc2.textShow.text = t2.text;
}
};
Key.addListener(keyListener);


t2.onChanged = function(){
text_mc2.textShow.text = t2.text;
}


และนี่คือส่วนที่ใช้ในการเปลี่ยน Font คับ สคิปถึกๆ เลยทำให้ output ออกมาแบบนั้นแล..เหอๆๆ
ผมลงสคริปใน combobox เลย(ไม่ค่อยเวิคเลย..เหอๆ :02:)  แนะนำผมอีกนิดก็ได้นะคับ ... :22:


on (change) {

if (this.value == 1) {

_parent.mc.textShow.wordWrap = true;
var style_fmt:TextFormat = new TextFormat();
style_fmt.font = "Tahoma";

_parent.mc.textShow.setTextFormat(style_fmt);
}
if (this.value == 2) {

_parent.textShow.wordWrap = true;
var style_fmt:TextFormat = new TextFormat();
style_fmt.font = "Curlz MT";

_parent.mc.textShow.setTextFormat(style_fmt);
}
if (this.value == 3) {

_parent.mc.textShow.wordWrap = true;
var style_fmt:TextFormat = new TextFormat();
style_fmt.font = "Edwardian Script ITC";

_parent.mc.textShow.setTextFormat(style_fmt);
}
}


:25:  แนะนำผมได้เลยนะครับ  เพราะผมรู้ตัวว่ายังไม่ค่อยรู้อะไรมากเท่าไหร่ (ถือว่าช่วยลูกเพนกวิ้น  ตาดำๆ  เหอๆๆๆ :02:)
..............................................................................ขอบคุณครับ   เดี๋ยวซักพักแวะมารบกวนต่อครับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 13 มิ.ย. 2008, 10:59 น.
t1.onChanged = function(){
   text_mc1.textShow.text = t1.text;
        lockFont(text_mc1.textShow)
   }

t2.onChanged = function(){
   text_mc2.textShow.text = t2.text;
        lockFont(text_mc2.textShow)
}

function lockFont(mc:MovieClip) {                                       //ฟังชั่นล๊อค font เดิมของ dynamic txt ที่เลือก
   ft = mc.getTextFormat();                        //ดึงค่า TextFormat(); ทั้งหมด
   oldFont = ft.font                                         //เอาฟ้อนต์ที่ดึงมาได้ ส่งไปตัวแปร oldFont
   mc.font = oldFont;                                 //เซ็ทฟ้อนต์ไว้ก่อนกันเหนียว อิอิ
}

ลอง lockFont ในสองตัวนี้ดูก่อนครับ ยกไปทั้งฟังชั่นเลย
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 13 มิ.ย. 2008, 11:40 น.
ไม่ได้อ่ะครับ  หรือว่าเป็นเพราะผมใส่ เปลี่ยน font ลงใน combobox เลย มันเลยแปลกๆ(หรือว่าผมใส่วสคริปที่น้าแอ๊ดให้มาผิดที่หว่า   ...แต่น่าจะถูกนะ  เหอๆๆ)
----แล้วถ้าผมจะเขียนสคริปเปลี่ยน font โดยเอาไว้ที่เฟรมแล้วมันจะเขียนเชื่อม(ไม่ต้องหวานมากนะ..คับ)กับcombobox    มันต้องเขียนไงอ่ะคับ (เขียนไม่ถูก.. :08:)
พร้อมรับคำแนะนำเช่นเคยครับ...

--->> ผมแนบไฟล์มาด้วยนะครับ  ขอบคุณครับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 14 มิ.ย. 2008, 01:35 น.
อ่ะ .... มันสับสนตั้งแต่ ขั้นต้นงานเลยนะครับ
จริงๆแล้วถ้าจะแยกช่อง input ต่างหากอย่างงี้ สคริปทั้งหมดจะไม่ใช่แบบที่ผมเขียนนะครับ
อันนี้แก้ให้ดูครับ 

แถมตัวเช็คฟ้อนต์เก่าให้แสดงผลที่ comboBox ด้วย  :22: จะได้ไม่มั่ว
// มีเอ๋อๆนิดหน่อยตอนเปลี่ยนสี ลองไปแก้ดูละกันครับ

http://img2.f0nt.com/flash/573ed42b1bdf5192bc6a0388c59bba40.swf

ต้องมีการดึงค่าฟ้อนต์เก่าออกมาก่อนด้วย
ไม่งั้นมันจะบังคับเป็น default ตลอดตอน input
เราต้องบังคับตอน change ปั๊ป เซ็ทฟ้อนต์ด้วย

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

อ้างอิงvar style_fmt:TextFormat = new TextFormat();
var font;
var listenerObject:Object = new Object();
listenerObject.change = function(obj:Object) {
   style_fmt.font = obj.target.selectedItem.label;
   mc.textShow.setTextFormat(style_fmt);
   font = style_fmt.font;
};
comboBox.addEventListener("change",listenerObject);

//// เช็ค ว่าเลือกฟ้อนต์ไหนไว้ ให้แสดงผลที่ comboBox ด้วย
function chkOld(font) {
   if (font == "Tahoma") {
      comboBox.selectedIndex = 0;
   }
   if (font == "Edwardian Script ITC") {
      comboBox.selectedIndex = 2;
   }
   if (font == "Curlz MT") {
      comboBox.selectedIndex = 1;
   }
}


ส่วนสคริปหลักเพิ่มเติมเพียบ 
แบบนี้ก็ดีแล้วครับ แต่ลองคิดให้มากขึ้นอีกนิดนะครับ  :22:

อ้างอิงfunction setFont(mc) {
   var old_fmt:TextFormat = new TextFormat();
   old_fmt = mc.textShow.getTextFormat();
   oldFont = old_fmt.font;
   return oldFont;
}
function lockFont() {                                       
   ft = mc.textShow.getTextFormat();                       
   oldFont = ft.font                                         
   mc.textShow.font = oldFont;                                 
}
//----------text input 1 ----//

t1.onChanged = function() {
   oldFont = setFont(text_mc1);
   text_mc1.textShow.text = t1.text;
   my_fmt.font = oldFont
   text_mc1.textShow.setTextFormat(my_fmt);
};
//----------text input 2 ----//

t2.onChanged = function() {
   oldFont = setFont(text_mc2);
   text_mc2.textShow.text = t2.text;
   my_fmt.font = oldFont
   text_mc2.textShow.setTextFormat(my_fmt);
};
//***************เปลี่ยนสี font ******************************

var my_fmt:TextFormat = new TextFormat();
var mc:MovieClip;
var pickerListener:Object = new Object();
pickerListener.change = function(cl:Object) {
   codeColor = "0x"+cl.getRGB();
   my_fmt.color = codeColor;
   mc.textShow.setTextFormat(my_fmt);
   lockColor();
   lockFont()
};
clp.addListener(pickerListener);
function choose(mc:MovieClip) {
   for (var i:Number = 1; i<=2; i++) {
      _root["text_mc"+i].gotoAndStop(1);
   }
   mc.gotoAndStop(2);
}
for (var i:Number = 1; i<=2; i++) {
   _root["text_mc"+i].onRelease = function() {
      _root.mc = this;
      choose(this);
      lockColor();
      clp.color = codeColor;
      chk = setFont(_root.mc)
      chkOld(chk)
      lockFont()
   };
}
function lockColor() {
   fmt = mc.textShow.getTextFormat();
   codeColor = "0x"+fmt.color.toString(16);
   mc.textShow.textColor = codeColor;
}


ผมไม่แก้ใหม่นะครับ เพราะถ้าเขียนจริงๆ น่าจะน้อยกว่านี้ครับ
แต่เขียนเพิ่มเติมไปดักเอา เพิ่มส่วนไหน ลองคลำๆดูครับ
หลักๆคือ

- ต้องดึงค่าฟ้อนต์เก่าออกมาด้วยทุกครั้ง เวลาจะพิมพ์เพิ่ม ไม่งั้นมันจะบังคับเป็น default ตลอดตอน input
ไม่รู้ว่าทำไมเหมือนกัน ยังไม่ได้เทสจริงจัง เลยแก้ด้วยวิธีนี้ไปก่อน สคริปเลยยืดยาวเฟื้อยยยยย  :08:

- ไม่เข้าใจสคริปส่วนที่ enter กับ ปุ่ม b1 เห็นไม่มีประโยชน์เลยลบไปแล้ว

- อันนี้จะแก้ไขยุ่งยาก เพิ่มเติมลำบากครับ เขียนเองยังงงเอง  :08:
ถ้าเป็น interface ในแบบผมเองอันก่อนนั้นคงไม่วุ่นวายขนาดนี้นะผมว่า
เพราะ input อันเดียว เลือกอันไหน ก็ใส่อันนั้น เซ็ทฟ้อนต์ก็น่าจะง่ายกว่า


มีคำถามนะครับ
เข้าใจเรื่อง function() แค่ไหนครับ
ประกาศใช้เอง สร้างเองง่ายๆ ได้ไหมครับ
ถ้าได้ ก็โอเคครับ

ถ้าไม่ได้ กลับไปอ่านเรื่องฟังชั่น การสร้า้ง วิธีใช้ การส่งอาร์กิวเมนต์ รีเทอร์น ฯลฯ
ฝึกให้คล่องๆครับ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: daromoja เมื่อ 14 มิ.ย. 2008, 09:07 น.
>> ขอบคุณมากครับน้าแอ๊ด    ตอนนี้กำลังพยายมปรับโค้ตให้สมบูรณ์และสั้นขึ้นอยู่
และตอนนี้กำลังเริ่มศึกษาเรื่องที่น้าแอ๊ดแนะนำมาด้วยครับ.............

--แต่ยังมีคำถามมี่ผมยังติดอยู่นิดนึงครับคือถ้าต้องการ กำหนดให้เมื่อเอาเคอเซอร์คลิ๊กเพื่อพิมพ์ text input อันใดอันหนึ่ง 
กรอบมันก็ select ไปที่ Dynamic text เป็น output ของมันเลยอ่ะคับ
     เช่น ผมเลือกเอาเคอร์เซอร์คลิ๊กพิม input ช่อง 1 มันก็ select ไปที่ Dynamic text ช่อง 1 อัติโนมัตเลย
      หรือเลือกที่select ไปที่ Dynamic text 2 มันก็จะขึ้นเคอร์เซอร์ให้แก้ไข ใน text input ช่อง 2 เลย
     ซึ่งการเลือกทุกแบบที่กล่าวมาสามารถเปลี่ยนสีและฟ้อนตามได้ด้วยเช่นกัน  รบกวนเช่นเคยนะครับ
.............................................................ขอบคุณครับ.. :46:คัรบ
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: iannnnn เมื่อ 14 มิ.ย. 2008, 11:47 น.
:30: น้าแอ๊ด
ชื่อเรื่อง: ตอบ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่
โพสต์โดย: ej_sing เมื่อ 14 มิ.ย. 2008, 12:08 น.
อ้างคำพูดจาก: ด.ช.ปรัชญา เมื่อ 14 มิ.ย. 2008, 11:47 น.
:30: น้าแอ๊ด
:41:

จะเพิ่มโฟกัส ก็

t1.onSetFocus = function() {
    mc = text_mc1
   choose(mc)
}

t2.onSetFocus = function() {
    mc = text_mc2
   choose(mc)
}

แล้วถ้าจะให้กด mc ตัวใด ก็เซ็ทโฟกัสไปที่ input ตัวนั้น ก็ลองหาเองดูมั่งครับ
เคสเดียวกัน