Как получить все кнопки в AIR / Flash - PullRequest
0 голосов
/ 19 сентября 2011

Я использую следующий код для регистрации функции для события щелчка всех SimpleButton s внутри моего swf файла.SimpleButton s, название которых начинается с 'b', должны быть зарегистрированы.Но это работает не для всех кнопок.Некоторые кнопки в другом MovieClip или другом кадре не будут видны!Я называю этот метод внутри первого кадра первого слоя.

findChilds(this);

function findChilds(obj:*):void
{
    if (obj == null)
    {
        return;
    }
    //trace(obj.name);

    if (obj.name.substr(0,1) == "b")
    {
        obj.addEventListener(MouseEvent.CLICK, onMediaClicked);
        trace(obj.name, " registered for click.");
    }
    try 
    {
        // some type of objects hasn't numChildren property, so i 
        // used try/catch statement, i know this way has bad performance. I fix it later
        for (var i:int = 0; i < obj.numChildren; i++)
        {
            findChilds(obj.getChildAt(i));
        }
    }
    catch (e:Error)
    {
    }
}

Пожалуйста, помогите!(

1 Ответ

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

Вам необходимо вызывать findChild(this) в каждом кадре, потому что если вы вызываете его в первом кадре, только объекты в последующих кадрах еще не загружены (и, следовательно, недоступны).Возможно, вы захотите использовать hasEventListener, чтобы убедиться, что вы не добавляете один и тот же прослушиватель событий дважды (или используете какой-либо массив для отслеживания того, какие кадры вы вызывали findChild(this)).Ваш метод не очень хороший и будет кошмаром для поддержания.Вы должны попытаться добавить слушателей событий «вручную».Вероятно, это не займет так много работы, и в долгосрочной перспективе будет проще поддерживать.

...