PDA

Просмотр полной версии : Кнопка и код к ней в разных местах


solo19770701
24.02.2009, 07:01
Всем доброго времени суток. Вопрос.
Я задался целью поместьить хотябы большую часть кода в один фрейм на основной врем.линейке, а все остальные компоненты по мере их необходимости. Но вот беда, если к примеру, код в первом кадре, а кнопка в третьем, то код не срабатывает. Думал решить эту проблемму с помощю лисенеров ("addEventListener"). Я думал, что для них не важно где обьект появляется, если функция прописана.
Прикладываю что я написал

//////////////////// все это в третьем кадре
var buttonListener:Object = new Object()
buttonListener.click = function(eventObject:Object)
{
getURL("pic04Button.html", _blank);
trace("Button has been Pressed");
};
pic04Button.addEventListener("click", buttonListener);
кнопка появляется только в пятом кадре. Т.е идея хранить все в разных местах, и доставать это по мере надобности, поэтому pic04Button._alpha = 0; я использовать не хочу, со временем много мусора набирается на экране.
Спасибо за любую помощь.:rolleyes:

Добавлено через 18 часов 46 минут
Я в замешательстве. Думал что если я поставлю лисенер в первом кадре, то не важно в каком кадре кнопка, потому что, по идеи, он слушает действие кнопки, а когда и где она появится значение не должно иметь.
Неработает. Решил использовать функцию в качестве лисенера

function myButtonListener(eventObject:Object):Void
{
trace("Кнопка была нажата");
};

myButton.addEventListener("click", myButtonListener);
. Если кнопка и слушатель в первом кадре, то все хороше. Но стоит перенести кнопку в какой либо другой какр, все, ничего не работает :wacko:

Другой вопрос, можно ли тоже самое сделать с onEnterFrame, где прописать что если кнопка нажата,


myMovieClip.onEnterFrame = function()
{
if(myButton.click)
{
trace("Кнопка нажата");
}
};
то происходит действие, опять же функция инициализации в первом кадре а кнопка в любом другом?

Fox M. Lurde
25.02.2009, 22:44
Я такую задачу решаю проще (потому как ленивый). Делаю отдельный слой для кода. И в этом слое нет никаких ключевых кадров - просто встаю в последний кадр на линейке таймлайна и нажимаю F5. В таком случае все функции доступны из всех мест.

solo19770701
26.02.2009, 01:41
to Fox M. Lurde: хай. Ты ошибаешся. Не все доступны. Я прикрепил файл в котором все популярно расписал. Решения я пока не придумал.
Есть идеи?:wacko:

NoCD
26.02.2009, 09:54
незнаю зачем тебе такой изврат, но видать надо.
Вот мой вариант

dimarik
26.02.2009, 12:33
Добавляйте кнопки в рантайме.

solo19770701
26.02.2009, 17:55
to NoCD: хай. Ты сделат то же самое, что и я. Поставил кнопку в первый кадр, только с помощю скрипта attachMovie, соответственно и код там же. Вопрос в другом, как запустить кнопку, если она инициализируется в
отдельном кадре от скрипта? Так как я показал в моем примере на кнопке номер три.

to dimarik:что ты имееш в виду?