Процедура для использования результата из текстового поля во всплывающем окне - ActionScript - PullRequest
0 голосов
/ 28 июля 2011

Я относительно новичок в ActionScript (начал его 2 месяца назад) и немного сомневаюсь в «процедуре» или «технике», связанной с передачей информации между объектами.

Я создал класс, который открывает окно, содержащее панель с текстовым полем и две кнопки, одну для подтверждения, другую для отмены.Он должен работать как подсказка, в которой вы вводите какой-то текст, а затем, если вам нравятся изменения, вы принимаете, в противном случае вы отменяете, а введенный текст отбрасывается.обрабатывать - это как получать текст, как только пользователь нажимает «Принять», из класса, из которого я хочу его получить.

Итак, я выбрал несколько громоздкий подход: во-первых, при запуске всплывающего окнаЯ связываю с ним функцию (называемую onResult () в коде) из «запускаемого класса», которая будет вызываться после того, как пользователь нажимает кнопки «Принять» или «Отмена»;во-вторых, чтобы получить текст, вставленный пользователем в поле, я оставляю ссылку на него общедоступной из своего класса.

Пожалуйста, посмотрите код здесь: http://pastebin.com/Kmud8rBe

IЯ также программировал на Android раньше, и подход там был бы намного чище, просто поместив текстовый результат из всплывающего окна в пакет внутри намерения и получив его от запущенного класса.Здесь я должен передать функции и тому подобное, которые мне совсем не нравятся (хотя это работает!).

Итак, мой вопрос, для вас, гуру ActionScript, как бы вы подошли к этому?

Спасибо и всего наилучшего!

пепилло

1 Ответ

0 голосов
/ 28 июля 2011

хорошо, что вы создали класс для своей всплывающей функциональности, но почему вы сделали все функции статичными? нормальный класс с обычными методами был бы лучше ... и пусть класс расширяется от Sprite, так что вы можете добавить экземпляр прямо на сцену.

package
{
    import flash.display.Sprite;

    public class Popup extends Sprite
    {
        public function Popup (label:String)
        {
           // add text and buttons ...
        }
    }
}

тогда вы можете просто сказать:

var pop:Popup = new Popup("message");
addChild(pop);

и чтобы вернуть данные после закрытия всплывающего окна, вы должны выполнить следующее:

private function onPressedAccept(event:MouseEvent):void
{
    var text:String = _label.text;

    // dispatch a custom event which saves the text as its data
    dispatchEvent(new MyEvent(MyEvent.ACCEPT, text));

    // close popup ...
    parent.removeChild(this);

    // or you would remove the popup in the ACCEPT eventlistener ...
}

прослушивание для принятия / отмены:

var pop:Popup = new Popup("message");
addChild(pop);

// add eventlistener
popup.addEventListener(MyEvent.ACCEPT, onAccept);
popup.addEventListener(MyEvent.CANCEL, onCancel);

private function onAccept(event:MyEvent):void
{
   trace(event.data);
}

ссылка о создании пользовательских событий: http://www.8bitrocket.com/2007/7/31/Creating-Custom-Events-In-Flash-AS3-ActionScript-3/

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