MICROGAMES.RU v.2

Новости, примеры, статьи о программировании

-10
-1
-6
-7
Java Java
up C++
up PHP
up Perl

ActionScript 3 весы. Пример.

Описание задачи.

Сделать весы как в жизни. Чтоб можно было бросать на чашу разные штуки и весы качались, качались и склонялись в нужную сторону.

Математика простая. Все достигается перемножением двух функций sin и exp. В терминах ActionScript - Math.pow(t)*Math.sin(t)

Надо чтобы все получилось примерно как на такой картинке:

График для Action Script 3 весов

Добавляем слушателя:

stage.addEventListener(Event.ENTER_FRAME, _scaleHandler);

В функции _scaleHandler вычисляем поворот планки весов для каждого кадра. Чтобы приблизить движения к реальным, в функции добавляем коэффициенты.

function _scaleHandler(e:Event):void{
if(ves.left.weight > ves.right.weight){
		ves.rotation = -(angle-Math.pow(.2,a)*60) - (Math.sin(.5*a))*(Math.pow(0.92,a))*15;
		prevState = 1;
	}else if(ves.left.weight < ves.right.weight){
		ves.rotation = (angle-Math.pow(.2,a)*60) + (Math.sin(.5*a))*(Math.pow(0.92,a))*15;
		prevState = 2;
	}else if(ves.left.weight == ves.right.weight){
		if(prevState == 1){
			ves.rotation = (angle-Math.pow(.5,a)*20) + (Math.sin(.5*a))*(Math.pow(0.92,a))*15;
		}else if(prevState == 2){
			ves.rotation = -(angle-Math.pow(.5,a)*20) - (Math.sin(.5*a))*(Math.pow(0.92,a))*15;
		}else{
			ves.rotation =  - (Math.sin(.5*a))*(Math.pow(0.92,a))*15
		}
	}
	a = a+.2;
	ves.left.rotation = -ves.rotation;
	ves.right.rotation = -ves.rotation;
}

Чашки весов я поместил внутрь мувика с планкой. Такое расположение позволяет нам легко выравнивать чаши в горизонтальном положении в каждом кадре:

ves.left.rotation = -ves.rotation;
ves.right.rotation = -ves.rotation;

Для наглядности я добавил три кнопки. Они будут эмулировать загрузку весов. Каждый может нагружать на весы разные вещи. Это достаточно просто сделать. В результате получились такие вот весы:

Файлы, используемые в статье.
  1. Упакованный fla файл весов .zip
Александр Смелков
Санкт-Петербург Зима 2011

Новое сообщение

  Имя
  Email (не обязательно)
  Номер

Microgames.ru v.2 - Новости, примеры, статьи о программировании.
Сделано в 2006 году. Перевыпущен в 2008 году.
Сайт содержит оригинальные материалы и переводы.
Сообщения об ошибках просьба присылать по адресу: contact@microgames.ru