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

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

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

Регистрация: Nov 2008
Адрес: Ukraine, Kyiv
Сообщений: 94
Отправить сообщение для ALeXVoz с помощью Skype™
По умолчанию Плавно изменить направления движения

Вообщем проблема следующая.

Есть флешка. При наведении курсора начинает двигаться вправо или влево. Когда курсор убирают - картинка медленно возвращается на свое место.
Почти все реализовано здесь.
Нужно реализовать плавность остановки и начала движения.
Осталось одна проблема. Смена скорости или направления в тот момент, когда наводится курсор мыши во время возвращения картинки в начальное положение.
Т.е. нужно замедлить флешку - остановить - и начать двигать в др направлении или плавно изменить скорость до нужной, если направление то же...
Как реализовать, честно говоря ума не приложу. Сделал все до этого момента.
Хотя в коде могут быть неточности.

Код AS1/AS2:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
 
 
pic_mc.useHandCursor = false;
 
 
a_b = 0;//значение начального ускорения
a_e = 1;//значение конечного ускорения
a_i = 0.2;//шаг изменения ускорения (резкость/плавность разгона и остановки анимации)
a = a_b;//начальное значение
pic_mc._y = 0;//начальное положение мувика по у
speed = 0.5;// общая скоростьвсе флешки
 
b_l = -pic_mc._width/2+Stage.width/2;
 
Stage.addListener(this);
 
function onResize() {
	b_l = -pic_mc._width/2+Stage.width/2;
	pic_mc._x = b_l;
	logo_mc._y = 0;
	tel_mc._y = 0;
	if (Stage.width<pic_mc._width) {
		logo_mc._x = 0;
		tel_mc._x = Stage.width-tel_mc._width;
	} else {
		logo_mc._x = pic_mc._x;
		tel_mc._x = pic_mc._x+pic_mc._width-tel_mc._width;
	}
 
 
}
onResize();
 
pic_mc._x = b_l;
 
pic_mc.onRollOver = function() {
	this.allow = true;//флаг - мыша наведена
	a = a_b;
};
pic_mc.onRollOut = function() {
	this.allow = false;//флаг - мыша не наведена
	a = a_e;
};
pic_mc.onEnterFrame = function() {
	ind = Stage.width/2-_root._xmouse;//определяется на какую часть флешки наведено
	if (this.allow) {
		if (_root._xmouse<=Stage.width/2) {
			if (pic_mc._x<=-2) {
				pic_mc._x += Math.round(speed*a*(ind/100));//скорость у края флешки (меньше знаминатель - больше скорость)
				if (a<a_e) {
					a += a_i;
				}
			}
		} else {
			if (pic_mc._x>=(-pic_mc._width+Stage.width)) {
				pic_mc._x -= Math.round(speed*a*(-ind/100));//скорость у края флешки (меньше знаминатель - больше скорость)
				if (a<a_e) {
					a += a_i;
				}
			}
		}
	}
 
	if (!this.allow) {
		if (pic_mc._x<b_l) {
			pic_mc._x += speed*a;
			if ((b_l-pic_mc._x)<20 && a>a_b+.01) {
				a -= a_i;
			}
		}
 
		if (pic_mc._x>b_l) {
			pic_mc._x -= speed*a;
			if ((pic_mc._x-b_l)<20 && a>a_b+.01) {
				a -= a_i;
			}
		}
 
	}
};
Просьба подсказать сам алгоритм. Может есть какие то примеры похожие. Я не нашел.
Только недавно начал изучать АС и еще не очень им владею.

Спасибо.


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

Теги
горизонтальная , прокрутка картинки
Опции темы
Опции просмотра

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

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


 


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


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