PDA

Просмотр полной версии : Заданное движение объектов


Apostoll
07.11.2006, 17:47
Есть два массива (по Х и У) с заданными координатами(длина массива не фиксирована),
есть поле 400*350....нужно придумать функцию которая обрабатывала движение

Вопрос1: может у кого есть готовое, а то мозг в спираль сворачивается:)
Вопрос2: можно ли на вход функции засунуть два массива, размер которых зарранее не известен...дабы сия функция была универсальной?


Спс заранее

FourSide
07.11.2006, 18:32
Зачем два массива?
А если сделать один массив объектов (типа, new Array(new Object(x:0, y:0), new Object(x:1, y:0).....).
Ну а нарисовать то можно с помощью lineTo() с перебором по одному массиву.

Apostoll
07.11.2006, 18:58
два массива чтобы можно было с файла подгрузить....и попроще типа....объекты лишними будут я думаю....не та задача...

BigDan
07.11.2006, 19:57
var numUkazatel:Number=0;
function moveObject(){
clip._x=arrXCords[numUkazatel];
clip._y=arrYCords[numUkazatel];
if(numUkazatel==arrZCords.length){
clearInterval(timer);
}
numUkazatel+=1;
}
timer=setInterval(moveObject,10);

Apostoll
07.11.2006, 20:09
спасибо, но боюсь не подойдет... нужна универсальная фунукия.... к ней будет много обращений...надо с _х и _у химичить....

BigDan
07.11.2006, 20:20
Что в твоем понимании уневерсальная функция? Нельзя написать функцию которая выполняла бы все твои желания(конечно можно, но это практически не реально).

Apostoll
07.11.2006, 20:27
не в том дело....

по сути:задание-написать имитатор РЛС(есть карта местности, есть радар)на карте движется некоторое кол-во объектов(целей), кол-во целей задается комбобоксом, как только выбрано кол-во жмется старт и они начинают перемещатся через чекпоинта, которые берутся из файла...
так вот нужна функция, которая бы вызывалась столько раз сколько объектов, и двигала их по всем чекпоинтам...кол-во чекпоинтов произвольно и заранее неизвестно....
могу внешний вид показать....

ЗЫ это мой дебют....с флешем первый раз работаю....выбирал меньшее из зол

BigDan
07.11.2006, 20:48
Вот несколько исходников по движению клипов.

Apostoll
07.11.2006, 21:13
спасибо, но у меня все равно сомнения, насчет применения setinterval()-у меня движется разное кол-во объектов, и период пробега до чекпоинта может быть(а скорее всего и будет) разным....а все должно двигатся одновременно и с заданной скоростью

ну насколько я понимаю смысл сетинтервал:)

BigDan
07.11.2006, 21:16
setInterval'ov можно запускать сколько угодно.

Apostoll
07.11.2006, 21:25
блин я в математику туго врубаюсь:)
ща рожу может чего:)...

Apostoll
07.11.2006, 21:28
с математематикой туго, ты не мог бы коменты приписать....если не сложно

Eric Gurt
08.11.2006, 01:31
Есть одна функция - распологает на экране точку по трём координатам,


var screenX=320, screenY=240; // размер твоего окна
var cz, cx, cy; // Камера
var result, camx, camy, npx2, npy2, npz2, delz, FOV=90; // Фов - угол обзора, но не в радианах и не углах... :drinks:

POINT Get2D(pox, poy, poz) // точка
{
camx = УГОЛ_ПОВОРОТА_КАМЕРЫ_Х;
camy = УГОЛ_ПОВОРОТА_КАМЕРЫ_У;

npx2 = (Math.sin(camx)*(pox-cx)+Math.sin(camx+3.14/2)*(poz-cz));
npy2 = Math.sin(camy)*(poy-cy)+Math.sin(camy+3.14/2)*(Math.cos(camx)*(pox-cx)+Math.cos(camx+3.14/2)*(poz-cz));
npz2 = Math.cos(camy)*(poy-cy)+Math.cos(camy+3.14/2)*(Math.cos(camx)*(pox-cx)+Math.cos(camx+3.14/2)*(poz-cz));

delz = 0.001*FOV;
rx = (npx2)/(npz2*delz);
ry = (npy2)/(npz2*delz);
if (npz2 <= 0.2)
draw = 0;

result.x = rx+screenX/2;
result.y = ry+screenY/2;
return result;
}

Возвращает точку-результат на экране.

Вопрос к тебе: а ты знаешь, как треугольник нарисовать?

Apostoll
08.11.2006, 20:51
решение задачи (http://flasher.ru/forum/showpost.php?p=585781&postcount=2) если кому нужно:drinks:

насчет треугольника две мысли:
1-нарисовать три линии
2-поиграть с трехконечной звездой