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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.08.2009, 20:44
mtema вне форума Посмотреть профиль Отправить личное сообщение для mtema Найти все сообщения от mtema
  № 1  
Ответить с цитированием
mtema

Регистрация: May 2006
Адрес: Земля
Сообщений: 51
По умолчанию Помогите разобраться с кодом

Здравствуйте!
Делаю карусель,имеется исходник шириной 980px,на котором друг за другом расположены 2 мувика с1 и с2 каждый шириной 1640px,зазор между ними около 5px,имеется кнопка которая выполняет функцию nextslide() — перемотка роликов влево. Все работает нормально,но при заходе мувиков c1 и c2 на второй круг (т.е. при появлении их справа) расстояние между ними то увеличивается то уменьшается.Пробовал привязывать величины к Stage.width не помогло. Подскажите в чем тут дело?

Код AS1/AS2:
function nextslide() {
	if (c1._x<=-1960) {
		c1._x = 1960;
	}
	if (c2._x<=-1960) {
		c2._x = 1960;
	}
	c1.poX = c1._x;
	c2.poX = c2._x;
	c1.tweenX = new mx.transitions.Tween(c1, "_x", mx.transitions.easing.Strong.easeOut, c1.poX, c1.poX-392, 0.7, true);
	c2.tweenX = new mx.transitions.Tween(c2, "_x", mx.transitions.easing.Strong.easeOut, c2.poX, c2.poX-392, 0.7, true);
 
}
Вложения
Тип файла: zip slides.fla.zip (8.1 Кб, 39 просмотров)

Старый 14.08.2009, 01:51
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Вместо =1960 надо +=1960*2.

Старый 14.08.2009, 10:34
mtema вне форума Посмотреть профиль Отправить личное сообщение для mtema Найти все сообщения от mtema
  № 3  
Ответить с цитированием
mtema

Регистрация: May 2006
Адрес: Земля
Сообщений: 51
Так конечно стало лучше,но дело в том что при частом нажатии на кнопку перемотки слайда,все равно зазор между мувиками увеличивается с каждым разом все больше и больше,почему не ясно ((

Старый 14.08.2009, 17:11
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Ясно же почему - при частом нажатии анимация не успевает проиграться до конца, а значит
Код AS1/AS2:
c1.poX = c1._x;
...
c1.poX-392
будет разным от времени нажатия.
[очень неуверенным голосом]
Да и монопольная постановка координат
Код AS1/AS2:
c1._x = 1960;
плевал на неё Tween, он продолжит ставить координаты какие ему захочется.

Старый 14.08.2009, 17:26
mtema вне форума Посмотреть профиль Отправить личное сообщение для mtema Найти все сообщения от mtema
  № 5  
Ответить с цитированием
mtema

Регистрация: May 2006
Адрес: Земля
Сообщений: 51
Вот засада! Как бороться посоветуете?

Старый 14.08.2009, 21:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Как вариант - хранить финальную позицию где либо, и при клике ставить её, попутно убивая твин.
Код не тестировал, просто покажу принцип:
Код AS1/AS2:
с1.finishX=c1._x;
c2.finishX=c2._x; //как никак надо определить
function nextslide() {
	if (c1._x<=-1960) {
		c1._x = 1960;
	}
	if (c2._x<=-1960) {
		c2._x = 1960;
	}
 
 
c1._x=c1.finishX;
c2._x=c2.finishX;
	c1.poX = c1._x;
	c2.poX = c2._x;
c2.finishX=c2.poX-392;
c1.finishX=c1.poX-392;
c1.tweenX.stop(); //или как там адоубовский твин убивается?
c2.tweenX.stop();
 
	c1.tweenX = new mx.transitions.Tween(c1, "_x", mx.transitions.easing.Strong.easeOut, c1.poX, c1.finishX, 0.7, true);
	c2.tweenX = new mx.transitions.Tween(c2, "_x", mx.transitions.easing.Strong.easeOut, c2.poX, c2.finishX, 0.7, true);
 
}

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

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

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


 


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


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