簡體   English   中英

as3 textfield錯誤或什么?

[英]as3 textfield bug or what?

我無法解決在Flash中處理動態文本字段的簡單問題。 我沒有腦細胞了,我正在放棄。

var g = ['text dang', 'text deng', 'dong', 'laah', 'maah'];

for(var q = 0; q < g.length; q++){
   var p = new grad_plate();
   p.name_field.multiline = false;
   p.name_field.wordWrap = false;
   p.name_field.autoSize = TextFieldAutoSize.LEFT;
   p.name_field.text = g[q];
   p.name_field.width = p.name_field.textWidth;
   p.plate_mc.width = p.name_field.width + 20;
   p.width = p.plate_mc.width;
   p.name = "name_" + q;
   stage.addChild(p);
   //p.x =  q * stage.getChildAt(q).width;
   //p.x = q * p.width;
   p.x =  q * 200;
}

我的grad_plate()類包含name_field文本字段和plate_mc作為背景。

我想根據實例的寬度動態設置每個實例的x。

給200(修復)正在工作,但我想動態獲得p.width,這給了我難看的水平對齊方式。

我認為您的工作示例對您有所幫助。

package {

    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.text.TextFormat;

    public class StackOverflow extends Sprite {
        public function StackOverflow() {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function onAdded(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, onAdded);

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            setup();
        }

        private function setup():void {
            var texts:Array = ["some", "text", "here", "dynamic"];
            var i:uint, len:uint = texts.length, posX:uint, plate:Plate;
            var textFormat: TextFormat = new TextFormat("Arial", 18, 0xFFFFFF, true);

            for (i; i < len; ++i) {
                plate = new Plate(texts[i], textFormat, Math.random() * 0xFFFFFF);
                addChild(plate);
                plate.x = posX;
                posX += plate.width;
            }
        }
    }
}

import flash.display.Graphics;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

internal class Plate extends Sprite {

    public function Plate(text:String, textFormat:TextFormat, color:uint) {
        const padding:int = 20;
        var textField:TextField = new TextField();
        var g:Graphics = this.graphics;
        textField.autoSize = TextFieldAutoSize.LEFT;
        textField.defaultTextFormat = textFormat;
        textField.multiline = false;
        textField.wordWrap = false;
        textField.text = text;

        addChild(textField);

        textField.x = textField.y = padding;
        g.beginFill(color);
        g.drawRect(0, 0, 2 * padding + textField.width, 2 * padding + textField.height);
    }
}

結果,將如下所示:

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM