เรื่องการโชว์ Font ใน Combobox

เริ่มโพสต์โดย sarina, 22 ก.ค. 2008, 11:13 น.

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

sarina

 :33: ช่วงนี้เงียบเหงาจังนะคะ
ความเดิมจากตอนที่แล้ว
อ้างคำพูดจาก: sarina เมื่อ 11 ก.ค. 2008, 12:26 น.

ที่ต้องการทำตอนนี้  ทำได้แล้วค่ะ  คือข้างล่างนี่
http://img2.f0nt.com/flash/a091bf2645c497432f7bbc5609919636.swf
คือจากเดิมที่ดึงฟ้อนจากเครื่องเรา  ให้เป็นดึงจากไลบารี่แทนน่ะค่ะ

import mx.controls.ComboBox;
var myCombo_cb:ComboBox;

function init ()
{
myCombo_cb.rowCount = 3;
var myDP:Array = new Array();
myCombo_cb.dataProvider = myDP;

var myFontLabel = ["Times", "Tahoma", "Arial", "Curlz MT", "Edwardian Script ITC"];
var listContent = ["myFont1", "myFont2", "myFont3", "myFont4", "myFont5"];


for (var i = 0;i <= 4;i++)
{
myDP.addItem(myFontLabel[i], listContent[i], listContent[i]);
}

myCombo_cb.addEventListener ("change", function ()
{
myCombo_cb.textField.setStyle ("fontFamily", myCombo_cb.value);
var myTxtFormat:TextFormat = new TextFormat();
myTxtFormat.font = String(myCombo_cb.value);
txt.setTextFormat(myTxtFormat);

});

myCombo_cb.addEventListener ("load", setCBListFonts);
myCombo_cb.addEventListener ("scroll", setCBListFonts);
}
function setCBListFonts ()
{
for (var i in myCombo_cb.dropdown.listContent)
{
var _tf:TextFormat = myCombo_cb.dropdown.listContent[i].cell.getTextFormat ();
_tf.font = myCombo_cb.dropdown.listContent[i].cell.text;
myCombo_cb.dropdown.listContent[i].cell.setTextFormat (_tf);
}
}
init();


**ความปวดหัวครั้งใหม่ (ตอนต่อมา)
:02:ถ้าต้องการให้ Combobox โชว์   Font  เหมือนรูปข้างล่าง  โดยเมื่อเอาเม้าไปชี้ที่  Font ตัวใดตัวหนึ่ง
ก็จะมีกล่องข้อความแสดงรูปแบบของฟ้อนตัวนั้น  (Font ดึงมาจากไลบารี่) น่ะค่ะ

หรือตามลิงค์ข้างล่างนี้อ่ะค่ะ
http://www.printenator.com/index.php?page=shop.product_details&flypage=flypage-ask.tpl&product_id=30&category_id=13&option=com_virtuemart&Itemid=66

ต้องทำแบบไหน  หรือเขียนสคริปยังจึงจะได้แบบนี้คะ

sarina

 :05: ช่วงนี้เงียบเหงามาก  ผู้คนหายหมดเลย
ตอนนี้ได้แบบนี้แล้วค่ะ  :33:
http://img2.f0nt.com/flash/cc8b80763dec06a92aecb8db32db232d.swf

iannnnn

โอ้ว ยิ่งใหญ่มาก :45:

เคยเห็นที่เขาดึงฟอนต์มาจากในเครื่องมาแสดงในลิสต์เลยนะครับ
แต่ไม่รู้จริงๆ ว่าทำได้ยังไง แต่เท่าที่เห็นของ sarina นี่ก็ยิ่งใหญ่มากๆ แล้ว :12:

poloh

ยินดีด้วยครับ

ว่าแต่การเปลี่ยนรูปแบบ font มันก็เหมือนกันไม่ใช่เหรอครับ
(หมายถึงที่แสดงในตัวที่เราเลื่อนๆได้ กับตัวอย่างเมื่อเอาเมาท์ไปวางข้างบนน่ะครับ)

ส่วน [object object] นี่พิมพ์เองหรือเปล่าครับ หรือต้องการเอาค่าของ font มาแสดงครับ
ถ้าเอาค่า font มาแสดง น่าจะเป็นปัญหาของการอ้าง property ผิดตัวครับ ยังไงก็ลองแก้ดูละกันน่อ
หรือถ้าผมมั่วไป ก็ขออภัยมา ณ ที่นี้ด้วยครับ

แต่การเปลี่ยน font มันน่าจะเหมือนกันจริงๆนะ
ยังไงก็ลองตรวจสอบ path หรือตัวแปร ดูละกันครับ ว่าอ้างอิงถูกตัว ถูกค่าหรือเปล่า

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

sarina

#4
ขอบคุณมากค่ะ แต่มันมีปัญหาอยู่ที่บรรทัดที่ 124 นะค่ะ

for (var i = 0;i <= 8;i++) 
{
   [color=red] myDP.addItem(myFontLabel[i], listContent[i], listContent[i]);[/color]
}

ตรง myDP.addItem น่ะค่ะ  ถ้าเป็นอย่างนี้มันจะโชว์รูปแบบฟ้อนและไม่ขึ้น [object object](แต่พอคลิ๊กเปลี่ยนฟ้อนมันเลี่ยนไม่ได้ค่ะ)
และถ้าเปลี่ยนเป็น myCombo_cb.addItem ฟ้อนมันจะเปลี่ยนได้ค่ะ  แต่รูปแบบฟ้อนมันจะไม่ขึ้น
และจะแสดง [object object] ดังที่ได้อัพเอาไว้

ช่วยหน่อยนะค่ะ

poloh

ตัวไหนคือ myCombo_cb ตัวไหนคือ myDp ครับ ?
ทำไมถึงมี 2 ตัว ??

ลองแก้ที่ event rollover หรืออะไรสักอย่าง ของเวลาเอาเมาท์ไปวางเหนือตัวเลือกนั้นดูละกันครับ

ผมไม่ได้ดูโค้ดนะครับ เดาล้วนๆ :47:
ก่อสร้างกับทำลาย เหมือนที่ลงมือ ต่างที่การกระทำ

sarina

var myDP = new Array();
myCombo_cb.dataProvider = myDP;

ที่จิงถ้าจะเปลี่ยนฟ้อนเฉยๆใช้  myCombo_cb คือชื่อ instance ของ List
แต่เมื่อยากให้โชว์ฟ้อนเมื่อโอเวอร์  มันต้องใช้ dataProvider เหมือรกับที่ดึงฟ้อนจากเครื่องมาโชว์
เช่น myCB.dataProvider = TextField.getFontList ();  ประมาณนี้อ่ะค่ะ+เดาเอาเองนิดหน่อยถึงมาก :02:

แล้วก็ตามที่บอกอ่ะค่ะในบรรทัดที่ 124 ในไฟล์
แต่ไม่รู้มันต้องเพิ่มตรงไหนอีกอ่ะค่ะ.. :05:

sarina

อ้างคำพูดจาก: sarina เมื่อ 23 ก.ค. 2008, 16:37 น.
ขอบคุณมากค่ะ แต่มันมีปัญหาอยู่ที่บรรทัดที่ 124 นะค่ะ

for (var i = 0;i <= 8;i++) 
{
   myDP.addItem(myFontLabel[i], listContent[i], listContent[i]);
}

ตรง myDP.addItem น่ะค่ะ  ถ้าเป็นอย่างนี้มันจะโชว์รูปแบบฟ้อนและไม่ขึ้น [object object](แต่พอคลิ๊กเปลี่ยนฟ้อนมันเลี่ยนไม่ได้ค่ะ)
และถ้าเปลี่ยนเป็น myCombo_cb.addItem ฟ้อนมันจะเปลี่ยนได้ค่ะ  แต่รูปแบบฟ้อนมันจะไม่ขึ้น
และจะแสดง [object object] ดังที่ได้อัพเอาไว้

ช่วยหน่อยนะค่ะ


SMF 2.1.7 © 2026, Simple Machines