Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.12.2008, 16:26
ptirA вне форума Посмотреть профиль Отправить личное сообщение для ptirA Найти все сообщения от ptirA
  № 11  
Ответить с цитированием
ptirA

Регистрация: Feb 2008
Сообщений: 77
за gTween спасбо! действительно неплохая и относительно простая в понимании штука, да вот только не решает она мой проблемы. Если кто нить понимает, подскажите плиз. Напоминаю.

по нажатию на карту она зумится, по 2у нажатию едет обратно, мне нужно чтоб в тот момент когда она зумится нельзя было вызвать mapScaleOut

как мне это отловить? если нужно могу выложить примерный код, весь не могу, там его дико много(

Старый 10.12.2008, 16:55
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 12  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Делаем флаг zoomAvailable, при старте твинов ставим его в false, подписываемся на окончание твинов (для gTween это Event.COMPLETE), и по окончании ставим его в true. В начале mapScaleOut и mapScaleIn поставить проверку:
Код AS3:
if(!zoomAvailable){
    return;
}
__________________
4am is time to rock

Старый 10.12.2008, 20:05
ptirA вне форума Посмотреть профиль Отправить личное сообщение для ptirA Найти все сообщения от ptirA
  № 13  
Ответить с цитированием
ptirA

Регистрация: Feb 2008
Сообщений: 77
Я безбожно туп, с такими знаниями как у меня противопоказано пользоваться чужим кодом (gTween), что бы пользоваться чужими классами надо дойти до состояния, когда любая задача прозрачна, вот тогда в целях экономии времени можно и gTween использовать. Я делаю вот так:

Код AS3:
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. я понимаю что то, что я написал полный бред, хотябы из соображений логики.

Старый 10.12.2008, 20:11
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 14  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
1. Фрагмент с if и присовением false флагу нужно ставить и в начале mapScaleOut. Кроме того, if должен быть до установки значения флага, а не после
2. у Tween, в отличие от gTween, событие окончания называется TweenEvent.MOTION_FINISH
3. Когда вы присваиваете переменный новый экземпляр твина, тогда и надо подписываться на момент окончания, т е строчки с подписью на окончание надо поставить внутри функций mapScaleIn/Out после создания твинов
4. По окончании твинов они должны вызывать функцию:
Код AS3:
function unlockTween(event:TweenEvent):void{
    zoomAvailable = true;
}
__________________
4am is time to rock

Старый 10.12.2008, 20:37
ptirA вне форума Посмотреть профиль Отправить личное сообщение для ptirA Найти все сообщения от ptirA
  № 15  
Ответить с цитированием
ptirA

Регистрация: Feb 2008
Сообщений: 77
Код AS3:
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);
}
Ругается на TweenEvent в unlockTween
1046: Type was not found or was not a compile-time constant: TweenEvent.

Старый 10.12.2008, 20:40
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 16  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Код AS3:
import fl.events.TweenEvent
пропишите
...и
Код AS3:
zoomAvailable = false
- куда делось? Просто после if поставить, а не удалить насовсем

Код AS3:
if (!zoomAvailable){
  return;
} 
zoomAvailable = false
Подпись на события должна быть в самом конце функции, и только для пересозданных твинах - т е addEventListener для myTween_scaleX2 не нужен в mapScaleIn, а для myTween_scaleX - не нужен в mapScaleOut
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 10.12.2008 в 20:43.
Старый 10.12.2008, 20:52
ptirA вне форума Посмотреть профиль Отправить личное сообщение для ptirA Найти все сообщения от ptirA
  № 17  
Ответить с цитированием
ptirA

Регистрация: Feb 2008
Сообщений: 77
Вы уверены что именно так? У меня он даже в хелпе такого не находит.
У меня прописано
Код AS3:
import fl.transitions.Tween;
ОПЛЯ! прописал fl.transitions.TweenEvent; ошибка ушла, но попрежнему не работает, т.е. все работает да вот только по старому (работает mapScaleOut до окончания mapScaleIn)

Добавлено через 37 минут
Окей) Вот

Код AS3:
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);
}
Что происходит. Теперь не зумится вообще. Если во время работы mapScaleIn вызвать mapScaleOut, main_mc прыгает в конечную точку и начинает возвращаться назад. А если по русски, то когда жмешь на кнопку, происходит движение карты в заданные координаты (другая функция, не суть), но !без зума! Есл нажать на кнопку еще раз (вызвать mapScaleOut) карта прыгает на конечные координаты и пытается ехать обратно, если продолжать паралитично жать на кнопку она дергается на конечных координатах. (((


Последний раз редактировалось ptirA; 10.12.2008 в 20:55.
Старый 10.12.2008, 21:31
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 18  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Код AS3:
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

Старый 10.12.2008, 21:44
ptirA вне форума Посмотреть профиль Отправить личное сообщение для ptirA Найти все сообщения от ptirA
  № 19  
Ответить с цитированием
ptirA

Регистрация: Feb 2008
Сообщений: 77
Теперь так) Зумится) но все равно когда одна из функций выполняется, вторая вызывается паралитическими кликами и карта по прежнему скачет в конечных координатах.

Старый 10.12.2008, 21:47
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 20  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Потрейсите zoomAvailable в начале функций, если переменная нигде больше не меняется, так не может быть, т к оно false всегда, когда Tween-ы выполняются
__________________
4am is time to rock

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.