![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2008
Сообщений: 77
|
за gTween спасбо! действительно неплохая и относительно простая в понимании штука, да вот только не решает она мой проблемы. Если кто нить понимает, подскажите плиз. Напоминаю.
по нажатию на карту она зумится, по 2у нажатию едет обратно, мне нужно чтоб в тот момент когда она зумится нельзя было вызвать mapScaleOut как мне это отловить? если нужно могу выложить примерный код, весь не могу, там его дико много( |
|
|||||
|
ветеран форума
|
Делаем флаг zoomAvailable, при старте твинов ставим его в false, подписываемся на окончание твинов (для gTween это Event.COMPLETE), и по окончании ставим его в true. В начале mapScaleOut и mapScaleIn поставить проверку:
__________________
4am is time to rock |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 77
|
Я безбожно туп, с такими знаниями как у меня противопоказано пользоваться чужим кодом (gTween), что бы пользоваться чужими классами надо дойти до состояния, когда любая задача прозрачна, вот тогда в целях экономии времени можно и gTween использовать. Я делаю вот так:
var zoomAvailable:Boolean; var myTween_scaleX:Tween; var myTween_scaleY:Tween; var myTween_scaleX2:Tween; var myTween_scaleY2:Tween; myTween_scaleX.addEventListener(Event.COMPLETE, mapScaleIn); myTween_scaleX2.addEventListener(Event.COMPLETE, mapScalOut); function mapScaleIn() { zoomAvailable = false; if (!zoomAvailable) { return; } myTween_scaleX = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleX, mainScaleXin, 1, true); myTween_scaleY = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleY, mainScaleYin, 1, true); } function mapScaleOut() { zoomAvailable = true; if (!zoomAvailable) { return; } myTween_scaleX2 = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleXin, mainScaleX, 1, true); myTween_scaleY2 = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleYin, mainScaleY, 1, true); } P.S. я понимаю что то, что я написал полный бред, хотябы из соображений логики. |
|
|||||
|
ветеран форума
|
1. Фрагмент с if и присовением false флагу нужно ставить и в начале mapScaleOut. Кроме того, if должен быть до установки значения флага, а не после
2. у Tween, в отличие от gTween, событие окончания называется TweenEvent.MOTION_FINISH 3. Когда вы присваиваете переменный новый экземпляр твина, тогда и надо подписываться на момент окончания, т е строчки с подписью на окончание надо поставить внутри функций mapScaleIn/Out после создания твинов 4. По окончании твинов они должны вызывать функцию:
__________________
4am is time to rock |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 77
|
var zoomAvailable:Boolean; var myTween_scaleX:Tween; var myTween_scaleY:Tween; var myTween_scaleX2:Tween; var myTween_scaleY2:Tween; function unlockTween(event:TweenEvent):void { zoomAvailable = true; } function mapScaleIn() { if (!zoomAvailable) { return; } myTween_scaleX.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleX, mainScaleXin, 1, true); myTween_scaleY = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleY, mainScaleYin, 1, true); } function mapScaleOut() { if (!zoomAvailable) { return; } myTween_scaleX.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX2 = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleXin, mainScaleX, 1, true); myTween_scaleY2 = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleYin, mainScaleY, 1, true); } 1046: Type was not found or was not a compile-time constant: TweenEvent. |
|
|||||
|
ветеран форума
|
пропишите
...и - куда делось? Просто после if поставить, а не удалить насовсем Подпись на события должна быть в самом конце функции, и только для пересозданных твинах - т е addEventListener для myTween_scaleX2 не нужен в mapScaleIn, а для myTween_scaleX - не нужен в mapScaleOut ![]()
__________________
4am is time to rock Последний раз редактировалось DarkLight; 10.12.2008 в 20:43. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 77
|
Вы уверены что именно так? У меня он даже в хелпе такого не находит.
У меня прописано ОПЛЯ! прописал fl.transitions.TweenEvent; ошибка ушла, но попрежнему не работает, т.е. все работает да вот только по старому (работает mapScaleOut до окончания mapScaleIn) Добавлено через 37 минут Окей) Вот import fl.transitions.TweenEvent; var zoomAvailable:Boolean; var myTween_scaleX:Tween; var myTween_scaleY:Tween; var myTween_scaleX2:Tween; var myTween_scaleY2:Tween; function unlockTween(event:TweenEvent):void { zoomAvailable = true; } function mapScaleIn() { if (!zoomAvailable) { return; } zoomAvailable = false; myTween_scaleX.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleY.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleX, mainScaleXin, 1, true); myTween_scaleY = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleY, mainScaleYin, 1, true); } function mapScaleOut() { if (!zoomAvailable) { return; } zoomAvailable = false; myTween_scaleX2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleY2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); myTween_scaleX2 = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleXin, mainScaleX, 1, true); myTween_scaleY2 = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleYin, mainScaleY, 1, true); } Последний раз редактировалось ptirA; 10.12.2008 в 20:55. |
|
|||||
|
ветеран форума
|
var zoomAvailable:Boolean = true; var myTween_scaleX:Tween; var myTween_scaleY:Tween; var myTween_scaleX2:Tween; var myTween_scaleY2:Tween; function unlockTween(event:TweenEvent):void { zoomAvailable = true; } function mapScaleIn() { if (!zoomAvailable) { return; } zoomAvailable = false; myTween_scaleX = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleX, mainScaleXin, 1, true); myTween_scaleY = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleY, mainScaleYin, 1, true); myTween_scaleX.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); } function mapScaleOut() { if (!zoomAvailable) { return; } zoomAvailable = false; myTween_scaleX2 = new Tween(main_mc, "scaleX", Regular.easeIn, mainScaleXin, mainScaleX, 1, true); myTween_scaleY2 = new Tween(main_mc, "scaleY", Regular.easeIn, mainScaleYin, mainScaleY, 1, true); myTween_scaleX2.addEventListener(TweenEvent.MOTION_FINISH, unlockTween); }
__________________
4am is time to rock |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 77
|
Теперь так) Зумится) но все равно когда одна из функций выполняется, вторая вызывается паралитическими кликами и карта по прежнему скачет в конечных координатах.
|
|
|||||
|
ветеран форума
|
Потрейсите zoomAvailable в начале функций, если переменная нигде больше не меняется, так не может быть, т к оно false всегда, когда Tween-ы выполняются
__________________
4am is time to rock |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|