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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.09.2008, 22:41
Salut вне форума Посмотреть профиль Отправить личное сообщение для Salut Найти все сообщения от Salut
  № 1  
Ответить с цитированием
Salut
[+1.4 06.06.08]
 
Аватар для Salut

Регистрация: Dec 2005
Сообщений: 52
По умолчанию Раскачивание маятника

Здравствуйте! Есть 4 карточки на веревках, мувиклипа, принаведении они с задержкой следуют за мышкой, центры их привязаны к началам веревок (как картина на стене), при отводе мышки с любой карточки, карточка должна маятником вернуться в начальное положение, так же и призадержки мыши в мувиклипе, если мышь не двигается, он должен маятником вернуться в начальное положение, все работает, кроме эффекта маятника. Подскажите пожалуйста.

Код:
for (var i:Number = 0; i<4; i++) {
	this["card"+i].onRollOver = function() {
		this.x = _root._xmouse;
		this.over = true;
	};
	this["card"+i].onRollOut = function() {
		this.over = false;
	};
	this["card"+i].angle = 0;
	this["card"+i].onEnterFrame = function() {
		if (this.hit.hitTest(_root._xmouse, _root._ymouse)) {//this.over==true){
			if (this.x != _root._xmouse) {
				var tmpa = (this.x-_root._xmouse)/20;
				if (tmpa+this.angle>this.angle+0.5) {
					this.angle = this.angle+1;
				} else if (tmpa+this.angle<this.angle-0.5) {
					this.angle = this.angle-1;
				} else {
					this.angle += tmpa;
				}
				this._rotation = this.angle;
			} else {
				if (this.angle != 0) {
					if (this.angle>0) {
						this.angle -= Math.abs(this.angle/15);
						this.over = false;
						trace(this.angle);
					} else if (this.angle<0) {
						this.angle += Math.abs(this.angle/15);
						this.over = false;
					}
					//this._rotation=this.angle;   
				}
			}
			//this.x=_root._xmouse;
		} else {
			if (this._rotation != 0) {
				if (this.angle != 0) {
					if (this.angle>0) {
						this.angle -= Math.abs(this.angle/15);
					} else if (this.angle<0) {
						this.angle += Math.abs(this.angle/15);
					}
				}
			}
		}
		this._rotation = this.angle;
		this.x = _root._xmouse;
	};
}
Я так понял что код затухания колебаний надо вставлять сюда

Код:
if (this.angle != 0) {
					if (this.angle>0) {
						this.angle -= Math.abs(this.angle/15);
						this.over = false;
						trace(this.angle);
					} else if (this.angle<0) {
						this.angle += Math.abs(this.angle/15);
						this.over = false;
					}
					//this._rotation=this.angle;   
				}
			}
			//this.x=_root._xmouse;
		} else {
			if (this._rotation != 0) {
				if (this.angle != 0) {
					if (this.angle>0) {
						this.angle -= Math.abs(this.angle/15);
					} else if (this.angle<0) {
						this.angle += Math.abs(this.angle/15);
					}
				}
исходник main.rar


Последний раз редактировалось Salut; 01.10.2008 в 20:13.
Старый 30.09.2008, 00:05
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код ничего не показывает. И вопроса понял, что "Маятник внутри маятника". Сложно понять...
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.09.2008, 00:41
Salut вне форума Посмотреть профиль Отправить личное сообщение для Salut Найти все сообщения от Salut
  № 3  
Ответить с цитированием
Salut
[+1.4 06.06.08]
 
Аватар для Salut

Регистрация: Dec 2005
Сообщений: 52
у меня на сцене 4 карточки (card), нужно чтобы при движении мышки внутри карточек они раскачивались.

Старый 30.09.2008, 01:50
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Запуск кода маятника вешайте на мышиный onRollOver у Ваших card. Остановка кода маятника - на onRollOut
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.09.2008, 11:29
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
исходник дайте
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 30.09.2008, 12:14
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 6  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Код не смотрел, но могу посоветовать. При наведении на маятник (onRollOver) мы допустим ставим какую-то переменную в тру. Ну или в индекс маятника, не важно. Вообщем, мы знаем, на каком маятнике находится мышка. При onRollOut ставим эту переменную в -1, допустим. Ну, значит, если этот индекс маятника неотрицательный, то в onEnterFrame смотрим на координаты курсора. Нам нужны текущие координаты и предыдущие. То есть чо-то вроде:
Код:
  // Предыдущие координаты курсора
  px = cx;
  py = cy;
  // текущие координаты
  cx = _xmouse;
  cy = _ymouse;
Если px != cx или py != cy и наш индекс маятника неотрицательный, значит мы двигаем мышью по маятнику и нужно его раскачивать. Ну я бы так сделал, не исключено что я извращенец (:
__________________
while(1) {}


Последний раз редактировалось Division; 30.09.2008 в 15:19.
Старый 02.12.2009, 07:46
vladislove вне форума Посмотреть профиль Отправить личное сообщение для vladislove Найти все сообщения от vladislove
  № 7  
Ответить с цитированием
vladislove

Регистрация: Jul 2008
Сообщений: 31
Вот для одной карточки
я думаю для четырех подправите немного(я стер ваш цикл чтоб с этим не путаться)

код :


Код AS1/AS2:
this["card0"].onRollOut = function() {
 
	t = 0;
	a = card0._rotation;
	b = 0;
	k = 10;
 
	_root.onEnterFrame = function() {
		this.over = false;
		b = a*(Math.exp(-t/3))*Math.cos(k*t);
		card0._rotation = b;
		t += 0.05;
		if (t>10) {
			card0._rotation = 0;
 
			delete this.onEnterFrame;
 
		}
	};
};
 
this["card0"].onRollOver = function() {
	this.x = _root._xmouse;
	this.over = true;
};
 
this["card0"].angle = 0;
this["card0"].onEnterFrame = function() {
	if (this.hit.hitTest(_root._xmouse, _root._ymouse)) {//this.over==true){
		if (this.x != _root._xmouse) {
			var tmpa = (this.x-_root._xmouse)/20;
			if (tmpa+this.angle>this.angle+0.5) {
				this.angle = this.angle+1;
			} else if (tmpa+this.angle<this.angle-0.5) {
				this.angle = this.angle-1;
			} else {
				this.angle += tmpa;
			}
			this._rotation = this.angle;
		} else {
			if (this.angle != 0) {
				if (this.angle>0) {
					this.angle -= Math.abs(this.angle/15);
				} else if (this.angle<0) {
					this.angle += Math.abs(this.angle/15);
				}
 
			}
		}
 
	} else {
		if (this._rotation != 0) {
			if (this.angle != 0) {
				if (this.angle>0) {
					this.angle -= Math.abs(this.angle/15);
				} else if (this.angle<0) {
					this.angle += Math.abs(this.angle/15);
				}
 
			}
		}
	}
	this._rotation = this.angle;
	this.x = _root._xmouse;
};

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

Теги
маятник

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

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


 


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


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