0

検索が成功しなかったことをユーザーに通知するアラートムービークリップをポップアップする動的アラートメソッドがあります。

alert("Map [" + inputTxt + "] not found.");

今、私はその線に沿って何かをしたいと思います

if (alertText.textWidth > myText.text.width) {
    myText.text = "Map not found.";
}

これがすべきことは、テキストボックス内のテキストの合計がテキストボックス自体のサイズを超える場合、inputTxt 変数を表示しないことです。

私が持っているものは機能しません。どんな提案も歓迎します (短く簡潔である限り)。

詳細情報: alertText は、オブジェクトに渡される文字列です。myText.text はテキストボックスです。テキストボックスに入れる前に、alertText が myText.text に収まるかどうかを確認したいと思います。

-オーリン

4

2 に答える 2

1

文字列には textWidth プロパティがありません。すべての文字が同じ幅のフォントを使用しない限り、テキストが収まるかどうかを事前に知る (簡単な) 方法はありません。

これを実現する方法は次のとおりです。

myText.text = alertText; //put the text in the box

if(myText.textHeight > myText.height || myText.textWidth > myText.width){
    //the text does not fit in it's entirety.
    myText.text = "Map not found.";
}

autoSizeこれは、textFieldのプロパティを使用していないことを前提としており、幅/高さを明示的に設定しています。

于 2012-09-24T18:13:43.913 に答える
0

宛先テキストフィールドに割り当てる前に文字列をチェックしたい場合は、別の文字列を作成してその textFormat を使用できます

var someShortText : String = "short string";
var someLongText : String = "very, very, very, very, long text";

function checkStringWidth(string : String, tMaxWidth : Number, tFormat : TextFormat) : Boolean {
    var tField : TextField = new TextField();
    tField.autoSize = TextFieldAutoSize.LEFT;
    tField.multiline = false;
    tField.wordWrap = false;
    tField.defaultTextFormat = tFormat;
    tField.text = string;
    return tField.width<=tMaxWidth;
}

trace(checkStringWidth(someShortText, someTF.width, someTF.defaultTextFormat));         
trace(checkStringWidth(someLongText , someTF.width, someTF.defaultTextFormat));
于 2012-09-24T18:17:26.987 に答える