Автоматически изменяемый размер спрайта в ActionScript 3 - PullRequest
1 голос
/ 10 сентября 2009

Я использую AS3 и создал всплывающее окно следующим образом:

        var s:Sprite = new Sprite();

        var shape:Shape = new Shape();
        shape.name = "HitArea";
        s.addChild( shape );

        shape.graphics.lineStyle( 4, 0xFFFFFF, 1 );
        shape.graphics.beginFill( 0xFFFFFF ); 
        shape.graphics.drawRoundRect( 0, 0, 200, 30, 10, 10 );

        var text:TextField = new TextField();
        text.text = "";
        text.autoSize = TextFieldAutoSize.CENTER;
        text.name = "Text";
        text.x = 100;
        text.y = 10;
        s.addChild( text );

        return s;

, который создает окно размером 200 x 30, которое служит в качестве окна ошибки. Текст иногда выходит за рамки, хотя я использую

        ( s.getChildByName( 'Text' ) as TextField ).text = "Text here";

как мне вписать поле в текст? Или есть лучшая альтернатива?

1 Ответ

1 голос
/ 10 сентября 2009

Как насчет установки размера после установки текста?

    var s:Sprite = new Sprite();

    var text:TextField = new TextField();
    text.text = "";
    text.autoSize = TextFieldAutoSize.CENTER;
    text.name = "Text";
/*  // Not yet
    text.x = 100;
    text.y = 10;
*/  s.addChild( text );

    // Create the shape based on text's size
    var shape:Shape = new Shape();
    shape.name = "HitArea";
    s.addChild( shape );
    shape.graphics.lineStyle(4, 0xFFFFFF, 1);
    shape.graphics.beginFill(0xFFFFFF);
    shape.graphics.drawRoundRect(0, 0, text.width + 32, text.height + 32, 10, 10); // Plus padding

    // Now adjust the text's position to the box's center
    text.x = (s.width  - text.width ) / 2;
    text.y = (s.height - text.height) / 2;

    return s;

Таким образом, поле будет масштабироваться с текстом независимо от его размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...