AS3 - Создание текстового поля на белой доске - PullRequest
0 голосов
/ 16 сентября 2011

Мне нужно создать белую доску в Flash Action Script 3. Я не могу создать свойство текстового поля в белом поле. Когда я открываю SWF, мне нужно свойство текстового поля, с помощью которого я могу создать поле текстового поля там, где пожелает пользователь. Пожалуйста, помогите ..

1 Ответ

0 голосов
/ 18 сентября 2011

Как-то так?


Whiteboard.as

package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFieldType;

    public class Whiteboard extends Sprite
    {

        private var _whiteboard : Sprite;
        private var _currentText : TextBox;

        public function Whiteboard()
        {
            super();

            createWhiteboard();

            enableUserInput();
        }

        private function createWhiteboard() : void
        {
            // create whiteboard sprite
            _whiteboard = new Sprite();

            // add to displaylist
            addChild(_whiteboard);

            // draw graphics
            with(_whiteboard.graphics)
            {
                lineStyle(10, 0x666666, 1);
                beginFill(0xFFFFFF, 1);
                drawRect(0, 0, 800, 600);
                endFill();
            }
        }

        private function enableUserInput() : void
        {
            _whiteboard.addEventListener(MouseEvent.CLICK, onUserInteract);
        }

        private function onUserInteract(event : MouseEvent) : void
        {
            // remove if empty
            if(_currentText && _currentText.htmlText.length == 0)
            {
                // remove from displaylist
                _whiteboard.removeChild(_currentText);
            }

            // add new
            if(event.target == _whiteboard)
            {
                _currentText = new TextBox();
                _currentText.x = event.stageX;
                _currentText.y = event.stageY;

                // add to displaylist
                _whiteboard.addChild(_currentText);
            }
            else
            {
                // use clicked text
                _currentText = event.target as TextBox;
            }

            // set selection
            _currentText.setSelection(0, _currentText.htmlText.length);

            // set focus
            stage.focus = _currentText;
        }

    }

}

import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
import flash.text.TextFormat;

class TextBox extends TextField
{
    function TextBox()
    {
        super();

        background = true;
        backgroundColor = 0xFF88FF;
        multiline = false;
        autoSize = TextFieldAutoSize.LEFT;
        type = TextFieldType.INPUT;
        htmlText = "";
        selectable = true;
        defaultTextFormat = new TextFormat("_sans", 18, 0xFFFFFF);

    }
}

enter image description here

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