Показать сообщение отдельно
Старый 21.10.2006, 20:33
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 14  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код:
class Tank extends MovieClip {
	static var list=[];
	function Tank(num:Number) {
		list.push(this);
	}
	function onClash(mc){
		trace("столкновение танк:"+_name+"/ ракета:"+ mc._name);
	}
}
Код:
class Raketa extends MovieClip {
	static var num:Number = 0;
	var par;
	function Raketa() {
		par = num++;
		onPress = startDrag;
		onRelease=stopDrag;
	}
	
	function onEnterFrame(){
		for(var i in Tank.list){
			if(hitTest(Tank.list[i])){
				Tank.list[i].onClash(this);
				break;
			}
		}
	}
}
Код:
for (var i = 0,level = 0; i<10; i++) {
	attachMovie("ra", "ra"+i, level++, {_x:i*50, _y:0});
	attachMovie("tank", "ta"+i, level++, {_x:i*50, _y:200});
}
поправь , у тебя в файле ракеты с танками под одинаковыми именами идут, но не в этом суть..
здесь, собственно, иллюстрация механизма в самом примитивном раскладе, все работает, но не эффективно, потому как каждой ракете приходится перебирать весь список танков..
если, например, положить танки в одтельный мувик, то проверять весь список придется только при хиттесте ракеты с этим общим мувиком..и т.д. и т.п. (сетка, структура, прочие уловки, о чем тебе и толкуют wvxvw, __etc,Sneg), но в этом случае существенный нюанс еще в соотношениях габаритов ( можно ли смотреть ту же ракету как точку, т.е. проверять хитТест с ее _x,_y), потому как такой подход требует hitTeat(x,y,true), а не hitTest(mc)..
нюансов много.., но смысл надеюсь ясен


Последний раз редактировалось silin; 21.10.2006 в 20:43.