#actionscript-3 #testing
#actionscript-3 #тестирование
Вопрос:
Я довольно новичок в AS3, так что вот моя проблема.
У меня есть два поля ввода текста p1 и p2. Я хочу выполнить условный тест, чтобы увидеть, имеет ли p1 фокус. Если это не так, то p2 должен иметь фокус. Вот некоторый код, который я пытаюсь заставить работать.
if ((Selection.getFocus()) == (p1totalScore.text)){
p1Score();
} p2Score();
Спасибо за вашу помощь.
Дэвид
Ответ №1:
Без FocusManager вы могли бы проверить, что возвращает этап для фокусировки:
(Если у вас есть textInput1 и textInput2 на монтажной доске)
import flash.events.MouseEvent;
import fl.controls.TextInput;
var textInput1:TextInput;
var textInput2:TextInput;
stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);
function mouseClickHandler(event:MouseEvent):void
{
if(stage.focus == textInput1.textField)
trace("text field 1 has focus.");
else if(stage.focus == textInput2.textField)
trace("Text field 2 has focus.");
}
Я думаю, что лучший подход, чем вы пытаетесь, — добавить обработчики событий для изменения фокуса:
import fl.controls.TextInput;
import fl.managers.FocusManager;
import flash.events.FocusEvent;
var textInput1:TextInput;
var textInput2:TextInput;
var focusManager:FocusManager = new FocusManager(this);
textInput1.addEventListener(FocusEvent.FOCUS_IN, textInput1FocusHandler);
textInput2.addEventListener(FocusEvent.FOCUS_IN, textInput2FocusHandler);
function textInput1FocusHandler(event:FocusEvent):void
{
trace("textInput1 has focus.");
}
function textInput2FocusHandler(event:FocusEvent):void
{
trace("textInput2 has focus.");
}
Ответ №2:
Adobe поможет вам в 99% случаев: ‘http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/managers/FocusManager.html ‘
Я просто изменил функцию, чтобы возвращать имя элемента управления, который имеет фокус, вместо имени экземпляра, которое возвращает их пример.
private function focusChange(e:FocusEvent):void {
var ti_now:InteractiveObject;
ti_now = fm.getFocus();
trace("Focus now: ", ti_now.name);
}