2014-06-08 6 views
0

У меня есть 6 текстовых полей на сцене с клавиатурой с цифрами 0-9.Как изменить активное текстовое поле в AS3?

В конечном счете это будет приложение для Android. И я хочу, чтобы можно было выбрать текстовое поле, а затем нажать кнопки клавиатуры и отобразить числа в активном текстовом поле.

Я пытался использовать активное поле Google и подобные поиски и не могу найти ссылку.

Имейте в виду, что я вонючий в темноте из того, что я пытался собрать из нескольких учебных пособий. Этот код, вероятно, полная фигня:

package { 

public class main { 

    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 
    import fl.managers.FocusManager; 
    var focus:FocusManager = new FocusManager(this); 

    btn_1.addEventListener(MouseEvent.MOUSE_DOWN, inputNumber); 

    public function inputNumber(m:MouseEvent){ 
      focus.text = 1; 
    } 

    public function main() { 
     // constructor code 
    } 

} 

} 

Текущие ошибки:

C:\Users\Otaku\Documents\lottocount\main.as, Line 19, Column 35 1118: Implicit coercion of a value with static type flash.display:InteractiveObject to a possibly unrelated type flash.text:TextField. 

C:\Users\Otaku\Documents\lottocount\main.as, Line 14, Column 44 1120: Access of undefined property onMyButtonClick. 

C:\Users\Otaku\Documents\lottocount\main.as, Line 14, Column 3 1120: Access of undefined property btn_1. 

C:\Users\Otaku\Documents\lottocount\main.as, Line 13, Column 47 1120: Access of undefined property onFocusIn. 

C:\Users\Otaku\Documents\lottocount\main.as, Line 13, Column 3 1120: Access of undefined property stage. 

ответ

0

Если доступ к focus объекта, вы будете иметь ссылку на ваш текущий активный (сосредоточены на) объекта.

Но на самом деле, только имея TextField, который позволяет вводить, открывается прикосновение к клавиатуре (только на мобильном телефоне).

Вы также можете сказать, что Flash не будет автоматически показывать клавиатуру, если вы планируете использовать свои собственные, тогда вы можете использовать фокус или создать свою собственную систему, которая будет отслеживать соответствующий TextField в зависимости от того, где было последнее касание.

EDIT:

Вот простейший пример того, как это может быть сделано.
В этом примере у меня есть два текстовых поля: tf1 и tf2. Также я добавил кнопку для покрытия ситуации, когда вам нужно сохранить последний фокус на конкретном типе объекта. Имя кнопок - myButton.

var lastSelectedTextField:TextField; // this will hold our last selected TextField 

// make sure stage exists. If you're writing script in a frame, don't mind, if you use OOP approach you can do so by adding an eventListener for the event ADDED_TO_STAGE 

stage.addEventListener(FocusEvent.FOCUS_IN, onFocusIn); // onFocusIn will trigger every time a focus is changed. 
myButton.addEventListener(MouseEvent.CLICK, onMyButtonClick); 

function onFocusIn(e:FocusEvent):void 
{ 
    if (stage.focus is TextField) 
      lastSelectedTextField = stage.focus as TextField; 
} 

function onMyButtonClick(e:MouseEvent):void 
{ 
    trace("Text of the last selected text field is:", lastSelectedTextField.text); 
} 
+0

Спасибо за ответ! Хотя я все еще немного смущен. Когда у меня много текстовых полей, и я нажимаю один, AS3 автоматически отслеживает текущий фокус? В этом случае мне просто нужно будет ввести числовые кнопки для ввода номера в текущий фокус? – Nifty62

+0

Да, Flash отслеживает текущий фокус, есть также событие, которое будет уведомлять ваши объекты, которые они получили или потеряли фокус. Обратите внимание, что нажатие кнопки сделает фокус фокуса кнопки;) Вероятно, вы хотите сделать условие, что ввод произойдет только в том случае, если текущий выбор является типом TextField или другим классом, который вы хотите использовать. –

+0

У меня сильная головная боль, чтобы это работало. Если я смогу получить частичный пример, я думаю, что смогу начать лучше. Подождите, я загружу часть своего кода на свой основной пост. – Nifty62

Смежные вопросы