หน้า: 1 [2]
 
ผู้เขียน หัวข้อ: การเปลี่ยนสี font ของ Dynamiic text ที่อยู่ใน MC  (อ่าน 14631 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
ขอบคุณน้าแอ๊ดมากครับ........................ (แจ๋ว แจ๋ว)
บันทึกการเข้า
อ่านให้เข้าใจแล้วลองทำตามด้วย
เอางานมาโชวด้วยนะครับ มีดัดแปลงด้วยล่ะ อย่า copy แล้ว modify อย่างเดียว
ถ้าไม่เอามาลง งานหน้ามาถามจะไม่ตอบเลยด้วย  ชิ
บันทึกการเข้า

เสร็จแล้วครับ  แต่ไอ้ที่ผมเพิ่มเข้ามาใหม่ดิ  มีบั๊คตรึม ส่งงานก่อนละกันครับ หน้าแตก

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

พอโอเคป่าวคับพี่แอ๊ด   ฮี่ๆ

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

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

......ถ้ามีอะไรสอนเพิ่มเติมผมพร้อมเรียนรู้เสมอครับ .....
 ...........................................มือใหม่อย่างผมขอบคุณมากคับ (โดยเฉพาะ อนุบาล ASที่พี่แนะนำมา)
                       
         **   ระวังนะครับ  ผมพร้อมจะกวนพี่อยู่เสมอ...อิอิอิ  เจ๋ง
« แก้ไขครั้งสุดท้าย: 12 มิ.ย. 2008, 15:29 น. โดย daromoja » บันทึกการเข้า
เข้ามางงครับ......
เห็นที่จะต้องเริ่มศึกษาซะที
ซื้อหนังสือมากองเป็นปีแล้ว......

หวัดดีน้าแอ๊ดด้วยครับ อิอิ
« แก้ไขครั้งสุดท้าย: 12 มิ.ย. 2008, 19:43 น. โดย oottee » บันทึกการเข้า

โอเค งาม แต่สคริปคงจะเละพอสมควรแล้วมั๊ง  ง่ะ

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()

และ เขียนสคริปที่เฟรมดีกว่านะครับ ฝึกไว้ๆ ตอนจัดการ ง่ายกว่าหน่อยนึง
เอาสคริปที่เพิ่มเติมมาดูหน่อยครับ
บันทึกการเข้า

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

**นี่เป็นส่วนของ 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 เลย(ไม่ค่อยเวิคเลย..เหอๆ ฮี่ๆ)  แนะนำผมอีกนิดก็ได้นะคับ ... ยิ้มน่ารัก

โค้ด:
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);
}
}

 กรี๊ดดดดด  แนะนำผมได้เลยนะครับ  เพราะผมรู้ตัวว่ายังไม่ค่อยรู้อะไรมากเท่าไหร่ (ถือว่าช่วยลูกเพนกวิ้น  ตาดำๆ  เหอๆๆๆ ฮี่ๆ)
..............................................................................ขอบคุณครับ   เดี๋ยวซักพักแวะมารบกวนต่อครับ
« แก้ไขครั้งสุดท้าย: 13 มิ.ย. 2008, 09:34 น. โดย daromoja » บันทึกการเข้า
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    มันต้องเขียนไงอ่ะคับ (เขียนไม่ถูก.. ง่ะ)
พร้อมรับคำแนะนำเช่นเคยครับ...

--->> ผมแนบไฟล์มาด้วยนะครับ  ขอบคุณครับ
« แก้ไขครั้งสุดท้าย: 13 มิ.ย. 2008, 17:01 น. โดย daromoja » บันทึกการเข้า
อ่ะ .... มันสับสนตั้งแต่ ขั้นต้นงานเลยนะครับ
จริงๆแล้วถ้าจะแยกช่อง input ต่างหากอย่างงี้ สคริปทั้งหมดจะไม่ใช่แบบที่ผมเขียนนะครับ
อันนี้แก้ให้ดูครับ 

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

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

ต้องมีการดึงค่าฟ้อนต์เก่าออกมาก่อนด้วย
ไม่งั้นมันจะบังคับเป็น 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;
   }
}


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

แอบอ้าง
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() แค่ไหนครับ
ประกาศใช้เอง สร้างเองง่ายๆ ได้ไหมครับ
ถ้าได้ ก็โอเคครับ

ถ้าไม่ได้ กลับไปอ่านเรื่องฟังชั่น การสร้า้ง วิธีใช้ การส่งอาร์กิวเมนต์ รีเทอร์น ฯลฯ
ฝึกให้คล่องๆครับ
« แก้ไขครั้งสุดท้าย: 14 มิ.ย. 2008, 01:37 น. โดย ej_sing » บันทึกการเข้า

>> ขอบคุณมากครับน้าแอ๊ด    ตอนนี้กำลังพยายมปรับโค้ตให้สมบูรณ์และสั้นขึ้นอยู่
และตอนนี้กำลังเริ่มศึกษาเรื่องที่น้าแอ๊ดแนะนำมาด้วยครับ.............

--แต่ยังมีคำถามมี่ผมยังติดอยู่นิดนึงครับคือถ้าต้องการ กำหนดให้เมื่อเอาเคอเซอร์คลิ๊กเพื่อพิมพ์ text input อันใดอันหนึ่ง 
กรอบมันก็ select ไปที่ Dynamic text เป็น output ของมันเลยอ่ะคับ
     เช่น ผมเลือกเอาเคอร์เซอร์คลิ๊กพิม input ช่อง 1 มันก็ select ไปที่ Dynamic text ช่อง 1 อัติโนมัตเลย
      หรือเลือกที่select ไปที่ Dynamic text 2 มันก็จะขึ้นเคอร์เซอร์ให้แก้ไข ใน text input ช่อง 2 เลย
     ซึ่งการเลือกทุกแบบที่กล่าวมาสามารถเปลี่ยนสีและฟ้อนตามได้ด้วยเช่นกัน  รบกวนเช่นเคยนะครับ
.............................................................ขอบคุณครับ.. :46:คัรบ
« แก้ไขครั้งสุดท้าย: 14 มิ.ย. 2008, 09:50 น. โดย daromoja » บันทึกการเข้า
กร๊าก น้าแอ๊ด
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
กร๊าก น้าแอ๊ด
    อี๋~

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

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

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

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

หน้า: 1 [2]
 
 
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!