>> ต้องเขียนโคดยังไงคับถึงจะสามารถ เปลี่ยนสี font ของ Dynamiic text ที่อยู่ใน MC
โดยพอคลิ๊กเลือกที่ MC ไหน ก็สามารถเปลี่ยนสีของ font ใน MC นั้นได้ เหมือนภาพประกอบ
ที่ให้มาข้างล่างคับ
ผมเพิ่งหัดเขียน Action Script เลยโง่หน่อย ถ้ามีตัวอย่างที่ผมวสมารถเรียนรู้ได้ ผมก็
ขอความกรุณาพี่ๆทุกคนด้วยนะคับ :02:
(http://img2.f0nt.com/12/d593d109049a34289b13639a38affde8.jpg)
:44: ช่วยหน่อยนะคับ
เริ่มจากตรงไหนดีครับ
ทำถึงตรงไหนแล้ว
ติดขัดตรงไหนครับ
หรือยังไม่ได้เริ่มเลย
หรือว่าอยากเอาแนวทางสคริป
หรือจะให้ทำให้เลยครับ
ฯลฯ
http://img2.f0nt.com/flash/0c971aa505329a95b9d8877feca7e224.swf
ขอบคุณ พี่ ej_sing มากๆๆ คับ
ถ้ามีคัวอย่างไฟล์กับอธิบายโคดเพิ่ม จะเปงพระคุณอย่างยิ่งคับ
ตอนนี้ผมเขียนไฟล์เปง AS 2 อยู่อ่ะคับ..
..........................................ขอบคุงค้าบบบบบบบบบบบบบบบบบบบบบบบบบ
ตอบไม่ตรงคำถามแฮะ พิมพ์ภาษาไทยให้ถูกต้องกว่านี้อีกนิดครับมันขัดตา :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 ก็ได้ครับถ้าใช้แค่ธรรมดา
:25:ขอบคุณมากครับ ถ้าผมติดตรงไหนยังไง
รบกวนถามอีกได้หรือเปล่าคัรบ
..................................... :45:
:33:ขอรบกวนอีกนิดนึงนะคับ ถ้าผมจะทำแบบตัวอย่างแรกที่พี่ให้มา
แบบเลือกได้ว่าจะเปลี่ยนสี mc อันไหนต้องทำยังไงครับ
ตัวอย่างเพิ่มจะขอพระคุณอย่างยิ่งครับ............................. :46:
อยากเข้าใจวิธีการ
หรืออยากเอาไปใช้เลยครับ
ถ้าอยากเข้าใจ เพื่อที่จะเอาไปต่อยอดทำงานอื่นๆได้ (ด้วยความเข้าใจ และสร้างขึ้นเอง ไม่ใช้ 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
งั้นผมถามต่อเลยละกันครับ ถ้าผมต้องการทำให้ mc ที่เป็น solid เปลี่ยนสีได้ต้องทำมั่งอะครับ ใช้โคดตัวเดียวกับที่ใช้เปลี่ยนสีในตัวทดลองพิมพ์ได้รึเปล่าครับ (เอาแค่หลักคร่าวๆก่อนก็ได้ครับ เดี๋ยวผมไปมั่วต่อเองก็ได้ครับ)
โอ้โห เห็นแล้วก็ขอบคุณแทนครับ
เพราะเป็นเรื่องที่ผมเองตอบไม่ได้จริงๆ
ขอบคุณครับน้าแอ๊ด :46:
เหมือนเป็นเป็นห้อง คุณถามน้าแอ๊ดตอบ เลย ว่าเมื่อไหร่จะถึงคิวน้าแอ๊ด เปิดห้องรับคำถามอย่างเป็นทางการ บ้างหละครับ
สุดยอดจริงๆครับ :25:
โอว ปั่นกันกระจุย มีคนตัดหน้าคุณตั้ง 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);
//เบิ้ลละกัน ให้ลองคลำหาเองดูสักนิดเพื่อความรู้ของท่าน (ใจดำชะมัด) :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:
:07c:+
ขอบคุณน้าแอ๊ดมากครับ........................ :45:
อ่านให้เข้าใจแล้วลองทำตามด้วย
เอางานมาโชวด้วยนะครับ มีดัดแปลงด้วยล่ะ อย่า copy แล้ว modify อย่างเดียว
ถ้าไม่เอามาลง งานหน้ามาถามจะไม่ตอบเลยด้วย :23:
เสร็จแล้วครับ แต่ไอ้ที่ผมเพิ่มเข้ามาใหม่ดิ มีบั๊คตรึม ส่งงานก่อนละกันครับ :03:
http://img2.f0nt.com/flash/f50889316666f5fc2f6a0df45986b196.swf
พอโอเคป่าวคับพี่แอ๊ด :02:
>> แต่ไอ้ที่เพิ่มเข้ามาใหม่นี่ดิ มากันเป็นตับเลย(ไม่ใช่กระสือนะ)
บั๊คน่ะคับ อย่างแรก ตอนเปลี่ยน Font **พอพิมพ์เพิ่มอีก มันกลับเป็น Font เดิมที่ตั้งดีฟอลใน dynamic text อ่ะคับ
(ผมลงสคริปใน combobox เลย มั่วเอาคับ เหอๆๆ )
อย่างต่อมา คือตอนที่เลือก mc ตัวไหน เคอเซอร์ก็จะไปที่บรรทัดของมัน(อันนี้ผมดทำไม่ถูก อายจัง :22:)
......ถ้ามีอะไรสอนเพิ่มเติมผมพร้อมเรียนรู้เสมอครับ .....
...........................................มือใหม่อย่างผมขอบคุณมากคับ (โดยเฉพาะ อนุบาล ASที่พี่แนะนำมา)
** ระวังนะครับ ผมพร้อมจะกวนพี่อยู่เสมอ...อิอิอิ :12:
เข้ามางงครับ......
เห็นที่จะต้องเริ่มศึกษาซะที
ซื้อหนังสือมากองเป็นปีแล้ว......
หวัดดีน้าแอ๊ดด้วยครับ อิอิ
โอเค งาม แต่สคริปคงจะเละพอสมควรแล้วมั๊ง :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()
และ เขียนสคริปที่เฟรมดีกว่านะครับ ฝึกไว้ๆ ตอนจัดการ ง่ายกว่าหน่อยนึง
เอาสคริปที่เพิ่มเติมมาดูหน่อยครับ
**มาแล้วคับ ตรวจงานเร็วจิงๆ(เกือบส่งไม่ทัน) :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:)
..............................................................................ขอบคุณครับ เดี๋ยวซักพักแวะมารบกวนต่อครับ
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 ลงใน combobox เลย มันเลยแปลกๆ(หรือว่าผมใส่วสคริปที่น้าแอ๊ดให้มาผิดที่หว่า ...แต่น่าจะถูกนะ เหอๆๆ)
----แล้วถ้าผมจะเขียนสคริปเปลี่ยน font โดยเอาไว้ที่เฟรมแล้วมันจะเขียนเชื่อม(ไม่ต้องหวานมากนะ..คับ)กับcombobox มันต้องเขียนไงอ่ะคับ (เขียนไม่ถูก.. :08:)
พร้อมรับคำแนะนำเช่นเคยครับ...
--->> ผมแนบไฟล์มาด้วยนะครับ ขอบคุณครับ
อ่ะ .... มันสับสนตั้งแต่ ขั้นต้นงานเลยนะครับ
จริงๆแล้วถ้าจะแยกช่อง 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() แค่ไหนครับ
ประกาศใช้เอง สร้างเองง่ายๆ ได้ไหมครับ
ถ้าได้ ก็โอเคครับ
ถ้าไม่ได้ กลับไปอ่านเรื่องฟังชั่น การสร้า้ง วิธีใช้ การส่งอาร์กิวเมนต์ รีเทอร์น ฯลฯ
ฝึกให้คล่องๆครับ
>> ขอบคุณมากครับน้าแอ๊ด ตอนนี้กำลังพยายมปรับโค้ตให้สมบูรณ์และสั้นขึ้นอยู่
และตอนนี้กำลังเริ่มศึกษาเรื่องที่น้าแอ๊ดแนะนำมาด้วยครับ.............
--แต่ยังมีคำถามมี่ผมยังติดอยู่นิดนึงครับคือถ้าต้องการ กำหนดให้เมื่อเอาเคอเซอร์คลิ๊กเพื่อพิมพ์ text input อันใดอันหนึ่ง
กรอบมันก็ select ไปที่ Dynamic text เป็น output ของมันเลยอ่ะคับ
เช่น ผมเลือกเอาเคอร์เซอร์คลิ๊กพิม input ช่อง 1 มันก็ select ไปที่ Dynamic text ช่อง 1 อัติโนมัตเลย
หรือเลือกที่select ไปที่ Dynamic text 2 มันก็จะขึ้นเคอร์เซอร์ให้แก้ไข ใน text input ช่อง 2 เลย
ซึ่งการเลือกทุกแบบที่กล่าวมาสามารถเปลี่ยนสีและฟ้อนตามได้ด้วยเช่นกัน รบกวนเช่นเคยนะครับ
.............................................................ขอบคุณครับ.. :46:คัรบ
:30: น้าแอ๊ด
อ้างคำพูดจาก: ด.ช.ปรัชญา เมื่อ 14 มิ.ย. 2008, 11:47 น.
:30: น้าแอ๊ด
:41:
จะเพิ่มโฟกัส ก็
t1.onSetFocus = function() {
mc = text_mc1
choose(mc)
}
t2.onSetFocus = function() {
mc = text_mc2
choose(mc)
}
แล้วถ้าจะให้กด mc ตัวใด ก็เซ็ทโฟกัสไปที่ input ตัวนั้น ก็ลองหาเองดูมั่งครับ
เคสเดียวกัน