Просмотр полной версии : Событие на покидание кадра
motor4ik
06.12.2005, 15:11
Если какое нибудь событие на покидание кадра, чтобы обработку его можно было написать в самом кадре.
Ну допустим есть n кадров, stop() в первом, и вот перейти на другой кадр мы можем разными способами, там на кнопке висит событие на стрелке итд, так вот как только уйдем с этого кадра можно как-нить проследить?
заранее спасибо
если я правильно тебя понял тебе нужно засечь когда мувик начнет анимацию?(тоесть уйдет из stop() кадра).
один из самых явных способов, это вызывать для этого функцию
playMovie() {
myMovie.gotoAndPlay(2);
__notifyAll();
}
метод __notifyAll(); собственно должен сообщать всем, о том что функция запущена(следовательно мувик играет, и вышел и стоп кадра)
можно сделать это через EventDispatcher\AsBroadcaster (чтобы события были настоящие)
второй способ, это поставить аналогичный метод на второй кадр.
motor4ik
06.12.2005, 17:36
спасибо, буду разбираться...вообщем смысл в чем..
у меня есть кадр, в котором закладки (кнопки), нажав на которую я могу перейти в любой другой кадр. так вот я могу нажать на любую из 10 ти кнопок, не хочется просто в каждую прописывать код ...можно но думал может можно проще...
вобщем у меня в кадре создаются клипы программно, так вот если перейду в другой кадр они останутся,а мне их нужно удалить...так вот чтобы не прописывать удаление при нажатии на каждую кнопку я думал может можно написать в кадре...если происходит событие ухода из кадра, удалить созданные мувики... вот так...
motor4ik
06.12.2005, 17:39
да ,я понял что ты предлагаешь...я так впринципе и буду делать...просто в этой функции __notifyAll(); буду удалять созданные мувики, но просто, они создаются только в одном из 10ти кадров...ну и фиг с ним впринципе :=) спасибо :=)
Если же речь идет о перехвате перехода с произвольного кадра на произвольный кадр, то ничичего другого в голову не приходит кроме как:
myMovie.stop();
var frameNum = myMovie._currentframe;
myMovie.onEnterFrame=function()
{
if(this._currentframe != frameNum)
{
__notifyAll();
delete this.onEnterFrame
}
}
Сам не люблю onEnterFrame...
Кстати в АС3 вроде ввели событие, генерируемое при покидании кадра.
motor4ik
06.12.2005, 17:46
спасибо :=) тоже такой вариант рассматривался :=)
нелюблю подобные вещи на онЕнтерФрейм вставлять...
Пока не знаю как отловить это по другому... Подразумевается самый общий случай: счит. головка покидает кадр, причем мы незнаем куда она направилась, незнаем также что послужило возбудителем этого события.
Спасибо моторчику за интересный вопрос...
а в директоре есть onExitFrame
вот она, сила!
Решение для более узкого случая...
Если мы собираемся отловить уход из КОНКРЕТНОГО заранее известного кадра в ПРОИЗВОЛЬНЫЙ кадр по НЕИЗВЕСТНЫМ причинам, то в этот кадр можно просто положить прозрачный мувик empty_mc и прописать там же:
empty_mс.onUnload = function(){__notifyAll()}
2 Motor4ik
Собственно это и есть ответ на твой вопрос
ну и нравиться же вам вешать обработчики событий на каждый кадр, и кидать пустые мувики =) функцию всеже легче написать.и через нее запускать
вобщем у меня в кадре создаются клипы программно, так вот если перейду в другой кадр они останутся,а мне их нужно удалить...так вот чтобы не прописывать удаление при нажатии на каждую кнопку я думал может можно написать в кадре...если происходит событие ухода из кадра, удалить созданные мувики... вот так...
MovieClip.prototype.uhod = function() {
var cf = this._parent._currentframe;
this.createEmptyMovieClip('obr', this.getNextHighestDepth());
this.obr.onEnterFrame = function() {
if (this._parent._parent._currentframe != cf) {
this._parent.swapDepths(1000);
this._parent.removeMovieClip();
this.removeMovieClip();
}
};
};
motor4ik
07.12.2005, 11:14
2 kruasan ^ отличный вариант мне очень понравился, спасибо. По поводу вопросов, всегда стараюсь задавать только интересные всем темы, иногда конечно они бывают сложные в решении, и я просто напросто не дожидаюсь ответа, решаю проблему как то сам...но здесь спасибо, действительно удобное решение...
2 Nirth ^ а как через функцию? писать эту функцию потом во все кнопки или другие обработчики переходов с кадра? ну это проблема, куданибуть да забудешь, да и когда кнопок оч. много , то это уже реально проблема, а так один мувик в кадр кинул и ок :=)
2 Шрек ^ вариант круасана все же будет попроще :=) но всеровно спасибо за еще один вариант решения :=)
ну и нравиться же вам вешать обработчики событий на каждый кадр, и кидать пустые мувики =) функцию всеже легче написать.и через нее запускать
А как в данном случае это сделать через функцию (без онЕнтерФрейма разумеется)? Мне самому интересно.
Нету во флеше события на уход из кадра хоть убей. Следовательно надо фиксировать какие-то признаки ухода из кадра (в неизвестный кадр, неизвестно почему). А это либо анлоуд мувика, сидящего только в этом кадре, либо проверка _каррентфрейм через тупой онЕнтерФрейм.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.