Показать сообщение отдельно
Старый 23.08.2007, 20:33
goarcade вне форума Посмотреть профиль Отправить личное сообщение для goarcade Найти все сообщения от goarcade
  № 18  
Ответить с цитированием
goarcade

Регистрация: Sep 2006
Сообщений: 32
Посмотрел я твой исходник - не тормозит, даже когда ставишь 100 монстров.
Попробуй мой код. Если не будет тормозить - юзай
Код:
//массив для 100 монстров
var monsterList:Array = new Array(100);
function onEnterFrame() {
	// координаты игрока
	var playerX = _xmouse;
	var playerY = _ymouse;
	for (var i:Number = 0; i<monsterList.length; i++) {
		var monster:MovieClip = monsterList[i];
		var dx:Number = playerX-monster._x;
		var dy:Number = playerY-monster._y;
		var angle:Number = Math.atan2(dy, dx);
		monster._rotation = angle*180/Math.PI;
		//свойство: a>b == a*a>b*b
		if (dx*dx+dy*dy>50*50) {
			monster._x += monster.speed*Math.cos(angle);
			monster._y += monster.speed*Math.sin(angle);
		}
	}
}
//создаем монстров
for (var i:Number = 0; i<monsterList.length; i++) {
	var monster:MovieClip = createMonster("monster"+i, i);
	monsterList[i] = monster;
	monster._x = Math.random()*Stage.width;
	monster._y = Math.random()*Stage.height;
	var maxSpeed:Number = 2;
	var minSpeed:Number = 0.5;
	monster.speed = minSpeed+Math.random()*(maxSpeed-minSpeed);
}
function createMonster(name:String, depth:Number):MovieClip {
	var mc:MovieClip = _root.createEmptyMovieClip(name, depth);
	mc.lineStyle(1);
	mc.beginFill(Math.random()*0xcccccc,100);
	var r:Number = 10;
	mc.moveTo(-r,-r);
	mc.lineTo(r,0);
	mc.lineTo(-r,r);
	mc.endFill();
	return mc;
}