ฉันจะเพิ่มสไตล์ให้กับช่องข้อความได้อย่างไร

เมื่อฉันกดปุ่ม มันจะพิมพ์สตริงแบบสุ่มใน TextField แต่ฉันก็ต้องการเพิ่มสไตล์ด้วย ดังนั้นฉันจึงใช้ TextFormat แต่ดูเหมือนว่าจะไม่ทำงาน ฉันไม่แน่ใจว่าเกิดอะไรขึ้น ดูเหมือนว่าจะไม่สนใจรูปแบบข้อความ

import flash.text.TextField;
import flash.text.TextFormat;
var tf: TextField = new TextField();
var format: TextFormat = new TextFormat();
format.size = 18;
format.align = TextFormatAlign.CENTER;
format.bold = true;
format.color = 0x555555;
tf.setTextFormat(format);

convob.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event: MouseEvent): void {

    starters();


addChild(tf);

}

function starters() {

var random = Math.floor((Math.random() * 5) + 1);

switch (random) {

    case 1:
        tf.text = "eiff";
        addChild(tf);
        break;
    case 2:
        tf.text = "fne";
        addChild(tf);
        break;
    case 3:
        tf.text = "fnfefe";
        addChild(tf);
        break;
    case 4:
        tf.text = "fnefewwe";
        addChild(tf);
        break;
    case 5:
        tf.text = "fneeeffvvv";
        addChild(tf);
    default:
        break;
}

}

person lehermj    schedule 11.04.2014    source แหล่งที่มา


คำตอบ (2)


ลองใช้ฟังก์ชัน tf.setTextFormat(format); ซึ่งคุณสามารถตั้งค่าเฉพาะส่วนของฟิลด์ข้อความได้หากต้องการ

person Zhafur    schedule 11.04.2014
comment
ฉันเพิ่งเพิ่มมันเข้าไปในฟังก์ชั่นแรกและมันก็ใช้งานได้ (เย้!) ขอบคุณ - person lehermj; 12.04.2014

setTextFormat() จะไม่ตั้งค่าข้อความที่ผู้ใช้แทรกหรือโดยทางโปรแกรม หากต้องการให้การจัดรูปแบบข้อความของคุณแสดงอย่างถูกต้องให้ใช้ defaultTextFormat() หลังจากการแทรกข้อความ:

function starters() {

    var random = Math.floor((Math.random() * 5) + 1);

    switch (random) {

        case 1:
            tf.text = "eiff";
            addChild(tf);
            break;
        case 2:
            tf.text = "fne";
            addChild(tf);
            break;
        case 3:
            tf.text = "fnfefe";
            addChild(tf);
            break;
        case 4:
            tf.text = "fnefewwe";
            addChild(tf);
            break;
        case 5:
            tf.text = "fneeeffvvv";
            addChild(tf);
        default:
            break;
    }

    tf.defaultTextFormat = format;

}
person Ribs    schedule 11.04.2014
comment
คุณสามารถเรียกคืน setTextFormat() ได้หากต้องการ เป็นไปได้มากว่าฟิลด์ข้อความที่มีหลายรูปแบบจะแทนที่ text setter ด้วยวิธีการที่จะทำให้ข้อความในฟิลด์ข้อความมีหลายสี แต่สำหรับรูปแบบคงที่ คุณควรใช้คุณสมบัติ defaultTextFormat นอกจากนี้ยังตั้งค่าและลืมประเภทของคุณสมบัติด้วย - person Vesper; 12.04.2014