อ่ะ .... มันสับสนตั้งแต่ ขั้นต้นงานเลยนะครับ
จริงๆแล้วถ้าจะแยกช่อง input ต่างหากอย่างงี้ สคริปทั้งหมดจะไม่ใช่แบบที่ผมเขียนนะครับ
อันนี้แก้ให้ดูครับ
แถมตัวเช็คฟ้อนต์เก่าให้แสดงผลที่ comboBox ด้วย
จะได้ไม่มั่ว
// มีเอ๋อๆนิดหน่อยตอนเปลี่ยนสี ลองไปแก้ดูละกันครับ
http://img2.f0nt.com/flash/573ed42b1bdf5192bc6a0388c59bba40.swfต้องมีการดึงค่าฟ้อนต์เก่าออกมาก่อนด้วย
ไม่งั้นมันจะบังคับเป็น default ตลอดตอน input
เราต้องบังคับตอน change ปั๊ป เซ็ทฟ้อนต์ด้วย
สคริปส่วน comboBox ของคุณเขียนมายืดเยื้อไปหน่อย ตัดทอนซะเหลือแค่นี้
เพราะใช้ listener ดีกว่าครับ เขียนบนเฟรม จริงๆมั่ว ไม่เคยทำงานกะ comboBox จริงๆซักที
และก็ผมลอกมาจาก Help นะครับ ทุกอย่างมีใน
Helpvar 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;
}
}
ส่วนสคริปหลักเพิ่มเติมเพียบ
แบบนี้ก็ดีแล้วครับ แต่ลองคิดให้มากขึ้นอีกนิดนะครับ
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
ไม่รู้ว่าทำไมเหมือนกัน ยังไม่ได้เทสจริงจัง เลยแก้ด้วยวิธีนี้ไปก่อน สคริปเลยยืดยาวเฟื้อยยยยย
- ไม่เข้าใจสคริปส่วนที่ enter กับ ปุ่ม b1 เห็นไม่มีประโยชน์เลยลบไปแล้ว
- อันนี้จะแก้ไขยุ่งยาก เพิ่มเติมลำบากครับ เขียนเองยังงงเอง
ถ้าเป็น interface ในแบบผมเองอันก่อนนั้นคงไม่วุ่นวายขนาดนี้นะผมว่า
เพราะ input อันเดียว เลือกอันไหน ก็ใส่อันนั้น เซ็ทฟ้อนต์ก็น่าจะง่ายกว่า
มีคำถามนะครับ
เข้าใจเรื่อง function() แค่ไหนครับ
ประกาศใช้เอง สร้างเองง่ายๆ ได้ไหมครับ
ถ้าได้ ก็โอเคครับ
ถ้าไม่ได้ กลับไปอ่านเรื่องฟังชั่น การสร้า้ง วิธีใช้ การส่งอาร์กิวเมนต์ รีเทอร์น ฯลฯ
ฝึกให้คล่องๆครับ