Вход

Просмотр полной версии : возможно ли динамически нажать кнопку?


n_nik
15.05.2008, 17:43
Здравствуйте.

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


var today:Date = new Date();
var todayNum:Number = today.getFullYear()*10000+today.getMonth()*100+today.getDate();
var so:SharedObject = SharedObject.getLocal("objectData");
if (so.data.lastVisit!=undefined)
{
var lastVisit:Number = parseInt(so.data.lastVisit);
if (todayNum<=so.data.lastVisit) {
skip.onRelease();
}
}
so.data.lastVisit = todayNum;
so.flush();


skip.onRelease - не работает. Подскажите, пожалуйста, как написать правильно? И возможно ли это? И вообще в нужном ли направлении я иду?

chingachgoog
15.05.2008, 18:12
А какой код висит на кнопке skip? Напишите.

n_nik
15.05.2008, 19:09
Все кнопки, в том числе и Skip, управляются из XML. На нашей кнопке в XML лежит такой код:

<InfoItem>
<Option type="string" name="id">skip</Option>
<Option type="string" name="name">ПРОПУСТИТЬ ЗАСТАВКУ</Option>
<Option type="string" name="method">onRelease</Option>
<Option type="string" name="action">doSkip</Option>
</InfoItem>


Только что обнаружил, что функция doSkip прописана в as-файле, посредством broadcastMessage:


public function doSkip() //Перепрыгнуть на ключевой кадр
{ this.gotoAndPlay(TControlledElement.label_finish);
}


То есть при нажатии на эту кнопку все мувики, которые вложены один в другой и проигрывающие каждый свою анимацию, прыгают на ключевой кадр с меткой "finish". Я пишу в вышеприведенном коде (после if)

broadcastMessage("doSkip");


Но и это не срабатывает... Возможно, дело в том, что broadcastMessage вызывается раньше, чем мувики, слушающие его, оказываются на таймлайне?.. Или я ошибаюсь в написании вызова? Не понимаю...

MrPoma
16.05.2008, 03:01
skip.onRelease();

chingachgoog
16.05.2008, 11:38
Все кнопки, в том числе и Skip, управляются из XML. На нашей кнопке в XML лежит такой код:


Кнопки не могут управляться из XML. :) Значит есть где-то функция, которая считывает XML и распределяет обработчики по кнопкам, на основании информации из XML. Посмотрите в какой момент эта функция вызывается и что конкретно вешается на кнопку.



Только что обнаружил, что функция doSkip прописана в as-файле, посредством broadcastMessage:


public function doSkip() //Перепрыгнуть на ключевой кадр
{ this.gotoAndPlay(TControlledElement.label_finish);
}



И где тут broadcastMessage? Не вижу.


Я пишу в вышеприведенном коде (после if)

broadcastMessage("doSkip");


Но и это не срабатывает... Возможно, дело в том, что broadcastMessage вызывается раньше, чем мувики, слушающие его, оказываются на таймлайне?.. Или я ошибаюсь в написании вызова? Не понимаю...


Надо так:
путь_к_объекту.broadcastMessage("событие_объекта");
А у вас ни пути нет, ни такого события как "doSkip".