Полезные классы во Flash




Главная > Уроки > Action script 3.0 > Полезные классы во Flash

Полезные классы во Flash

Автор/переводчик статьи: Команда сайта flashmaster.org.ua

Дата: 2012-08-29

Классы для action script

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

Спонсор статьи: Раскрутка сайта

package aneg
{
import aneg.*;
import flash.geom.*;
import flash.display.*;

dynamic public class ageMath
{

public function ageMath()
{

}
//Находится ли Num в диапазоне lRange..uRange
static public function inRange(Num:Number,lRange:Number,uRange:Number):Boolean
{
return ((Num > lRange) && (Num < uRange));
}

//получить ближайшие число к arg - Val1 или Val2
static public function getClosest(arg:Number,Val1:Number,Val2:Number):Number
{
if(Math.abs(arg - Val1)< Math.abs(arg - Val2)) return Val1; return Val2;
}

//Получить случайное число из диапазона clow..chigh
static public function Random(clow:Number, chigh:Number):Number
{
return
Math.round(Math.random() * (chigh - clow)) + clow;
}

//Получить целое случайное число из диапазона clow..chigh
static public function RandomInt(clow:int, chigh:int):int
{
return
Math.round(Random(clow,chigh));
}

//Равны ли числа Num и aNum с заданной погрешностью aprox
static public function aproxEqual(Num:Number, aNum:Number, aprox:Number=0.00001):Boolean
{
return (Math.abs(aNum-Num)<=aprox);
}

//Перевести число val из диапазона A..B в диапазон C..D
static public function RemapVal(val:Number,A:Number,B:Number,C:Number,D:Number):Number
{
return C + (D - C) * (val - A) / (B - A);
}
//Получить число из диапазона cx..cy, зависящей от коэфициента s.
//если s=0.0 то возвращается cx.
//если s=1.0 то возвращается cy.
static public function Lerp(cx:Number,cy:Number,s:Number):Number
{
return cx + s*(cy - cx);
}
//Пересекаются ли две линии.
static public function IsLinesCross(x11:Number,y11:Number,x12:Number,y12:Number, x21:Number,y21:Number,x22:Number,y22:Number):Boolean
{
// решаем систему методом Крамера
var d:Number = (x12 - x11)*(y21 - y22) - (x21 - x22)*(y12 - y11);
if (d == 0) return false;//Отрезки либо параллельны, либо полностью/частично совпадают
var d1:Number = (x21 - x11)*(y21 - y22) - (x21 - x22)*(y21 - y11);
var d2:Number = (x12 - x11)*(y21 - y11) - (x21 - x11)*(y12 - y11);
var t1:Number = d1 / d;
var t2:Number = d2 / d;
if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1)
return true; //пересекаются
else
return false; //не пересекаются
}
}
}

Надеюсь некоторые окажутся вам полезными. Весь класс можно скачать здесь:
http://www.anegmetex.com/devblog/files/ageMath.as

Просмотров: 1889


Понравился материал? Поделись с друзьями!





Подписаться на рассылку.

При перепечатки материалов ссылка на наш сайт обязательна!


 1