ActionScript 2.0 - совпадающие трассы не совпадают - PullRequest
0 голосов
/ 28 сентября 2011

(Господь, помогите мне для программирования в AS2)

Я перебираю массив объектов текстового поля и отслеживаю выделенное поле фокуса при нажатии клавиши Tab, а также каждый объект.

Я пытаюсь приравнять эти объекты, но в то время как они отслеживают точно то же самое, они не являются.

m_InputFieldsArray = new Array(m_TitleTextInput, m_CommentsTextArea, m_EmailTextInput);

for (var i:Number = 0; i < m_InputFieldsArray.length; i++)
{
    trace("Get Focus: " + Selection.getFocus());
    trace("Arr Index: " + m_InputFieldsArray[i].textField);

    if (Selection.getFocus() == m_InputFieldsArray[i].textField) 
    {
        trace("Match!");
        return;
    }
    else
    {
        trace("NO Match!");
    }
}

вывод:

Get Focus: _level0.m_Window.form.m_TitleTextInput.textField
Arr Index: _level0.m_Window.form.m_TitleTextInput.textField
NO Match!
Get Focus: _level0.m_Window.form.m_TitleTextInput.textField
Arr Index: _level0.m_Window.form.m_CommentsTextArea.textField
NO Match!
Get Focus: _level0.m_Window.form.m_TitleTextInput.textField
Arr Index: _level0.m_Window.form.m_EmailTextInput.textField
NO Match!

первая группа отслеживает то же самое, но, видимо, они не совпадают. Selection.getFocus() возвращает строку, в то время как индекс массива отслеживает объект текстового поля. если я добавлю toString() к объекту текстового поля, он будет выглядеть как [Object object]

как мне выполнить матч?

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

В качестве альтернативы, если вы не хотите использовать eval () с плохой репутацией , чтобы получить строковое представление того же типа, что и Selection.getFocus (), вы можете использовать "" + m_InputFieldsArray[i].textField.Он не вернет «[Object object]», как toString().

Это в основном то, что вы видите в своих вызовах трассировки, что строка, соединенная со ссылкой на объект, дает путь к объекту, а не .toString () на объекте.

Я могусейчас не тестирую AS2, но я уверен, что так оно и есть.Таким образом, вы могли бы сделать что-то вроде этого:

if (Selection.getFocus() == "" + m_InputFieldsArray[i].textField) 
1 голос
/ 28 сентября 2011

Используйте eval() для Selection.getFocus()

...