Nano Hash - криптовалюты, майнинг, программирование

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

Я работал над небольшим учебным проектом в AS3 и столкнулся с проблемой. Я делаю программу рисования в стиле MS Paint и хочу, чтобы пользователь мог изменить размер кисти с помощью поля ввода. У меня две проблемы. Во-первых, я не знаю, как через код сделать поле ввода, а во-вторых, я не знаю, как передать переменную из поля ввода на сцене в переменную, управляющую размером кисти.

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

    public class DrawingApp extends Sprite
    {
        var square0:Sprite;
        var textField: TextField;
        var textField2: TextField;
        var textField3: TextField;
        var square1:Sprite;
        var square2:Sprite;
        var square3:Sprite;
        var lineColor:uint = 0x000000;
        var brushSize:Number = 1;

        public function DrawingApp() 
        {

            square0 = new Sprite();
            addChild(square0);  
            square0.graphics.lineStyle(1,0x000000);
            square0.graphics.beginFill(0x000000);
            square0.graphics.drawRect(0,0,30,20);
            square0.graphics.endFill();
            square0.x = 500;
            square0.y = 10;

            square1 = new Sprite();
            addChild(square1);  
            square1.graphics.lineStyle(1,0x000000);
            square1.graphics.beginFill(0x0000FF);
            square1.graphics.drawRect(0,0,30,20);
            square1.graphics.endFill();
            square1.x = 500;
            square1.y = 40;

            square2 = new Sprite();
            addChild(square2);  
            square2.graphics.lineStyle(1,0x000000);
            square2.graphics.beginFill(0xff0000);
            square2.graphics.drawRect(0,0,30,20);
            square2.graphics.endFill();
            square2.x = 500;
            square2.y = 70;

            textField = new TextField;
            addChild(textField);
            textField.x = 500;
            textField.y = 100;
            textField.width = 30;
            textField.height = 20;
            textField.text = "Eraser";
            textField.selectable = false;  
            textField.border = true; 

            textField2 = new TextField;
            addChild(textField2);
            textField2.x = 500;
            textField2.y = 130;
            textField2.width = 30;
            textField2.height = 20;
            textField2.text = "Clear";
            textField2.selectable = false;  
            textField2.border = true; 

            textField3 = new TextField;
            addChild(textField3);
            textField3.x = 500;
            textField3.y = 160;
            textField3.width = 30;
            textField3.height = 20;
            textField3.text = brushSize;
            textField3.selectable = true;  
            textField3.border = true; 


            init();
        }

        private function init():void
        {
            graphics.lineStyle(1, lineColor, 1);
            square0.addEventListener(MouseEvent.CLICK, changetoDefault);
            square1.addEventListener(MouseEvent.CLICK, changetoBlue);
            square2.addEventListener(MouseEvent.CLICK, changetoRed);
            textField.addEventListener(MouseEvent.CLICK, changetoEraser);
            textField2.addEventListener(MouseEvent.CLICK, clearAll);
            textField3.addEventListener(KeyboardEvent.KEY_DOWN, adjustSize);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseIsDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, mouseIsUp);
        }

        private function changetoEraser(event: MouseEvent):void
        {
            lineColor = 0xffffff;
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function adjustSize(event: KeyboardEvent)
        {
            brushSize = textField3.text;
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function clearAll(event:MouseEvent):void
        {
            graphics.clear();
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function changetoDefault(event: MouseEvent):void
        {
            lineColor = 0x000000;
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function changetoBlue(event: MouseEvent):void
        {
            lineColor = 0x0000ff;
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function changetoRed(event: MouseEvent):void
        {
            lineColor = 0xff0000;
            graphics.lineStyle(brushSize, lineColor, 1);
        }

        private function mouseIsDown(event: MouseEvent):void
        {
            graphics.moveTo(mouseX, mouseY);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, moveMyMouse);
        }

        private function mouseIsUp(event: MouseEvent):void
        {
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveMyMouse);
        }

        private function moveMyMouse(event:MouseEvent):void
        {
            graphics.lineTo(mouseX, mouseY);
        }
    }
}

Я понял, что установка для brushSize значения textField3.text не сработает, потому что оно преобразует строку в число. Я понятия не имею, как я могу сделать так, чтобы это работало. Спасибо всем, кто может пролить свет на это для меня.


Ответы:


1

Вы можете создать поле ввода из кода во Flash, создав TextField и установив его тип на TextFieldType.INPUT.

Чтобы преобразовать строку в число, вам придется использовать parseFloat() или parseInt() (я не знаю, нужно ли вам целое число или число с плавающей запятой наизусть).

Хотя это минимально, я думаю, этого должно быть достаточно, чтобы помочь вам снова начать работу.

23.04.2012
  • Я получаю сообщение об ошибке 1120: Доступ к неопределенному свойству TextFieldType. 23.04.2012
  • Поскольку я не знал этого наизусть, я скопировал это из собственного рабочего кода. Не могли бы вы опубликовать код, который дает эту ошибку для вас? 23.04.2012
  • Неважно, кажется, я знаю, что ты делаешь. Вы пишете что-то вроде var a:TextField = new TextField; a.TextFieldType; Вместо этого вы должны написать a.type = TextFieldType.INPUT; 23.04.2012
  • Я добавил textField3.type = TextFieldType.INPUT; в блок textField3, и он выдает эту ошибку. Хотя других проблем нет. 23.04.2012
  • Вы импортируете TextFieldType? 23.04.2012
  • Вероятно, это проблема. Позволь мне сделать это. 23.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..