Показать сообщение отдельно
Старый 25.08.2011, 16:03
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 1  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
По умолчанию Действия происходят только с последнего спрайта

Действия происходят только с последнего спрайта.
Тоесть в моем случае я на сцену ставлю башни и стреляет только с последней башни, вот код:
Код AS3:
		private function thisClick(e:MouseEvent):void {
			var xv:int = (e.target as Sprite).x;
			var yv:int = (e.target as Sprite).y;
			makeTurret(xv, yv);
			(e.target as Sprite).removeEventListener(MouseEvent.CLICK, thisClick);
		}
		private function makeTurret(xValue:int,yValue:int):void{
			var turret = new Sprite();
			turret.x = xValue + 12.5;
			turret.y = yValue + 12.5;
			turret.graphics.beginFill(0x999999);
			turret.graphics.drawCircle(0,0,12.5);
			turret.graphics.endFill();
			turret.graphics.beginFill(0xFFFFFF);
			turret.graphics.drawRect(-2.5, 0, 5, 20);
			turret.graphics.endFill();
			addChild(turret);
			turret.addEventListener(Event.ENTER_FRAME, eFrameEvents);
		}
		private function eFrameEvents(e:Event):void {
			var turret:Sprite = Sprite(e.target);
			var distance:Number = range;
			enTarget = null;
			for(var i:int=enemyHolder.numChildren-1;i>=0;i--){
				var cEnemy =enemyHolder.getChildAt(i);
				if (Math.sqrt(Math.pow(cEnemy.y - turret.y, 2) + Math.pow(cEnemy.x - turret.x, 2)) < 100) {					
					enTarget = cEnemy; 
				}
			}
			if(enTarget != null){
				turret.rotation = Math.atan2((enTarget.y-turret.y), enTarget.x-turret.x)/Math.PI*180 - 90;
				if(loaded2){
					loaded2 = false;
					var newBullet = new Sprite();
					newBullet.graphics.beginFill(0xFFFFFF);
					newBullet.graphics.drawCircle(0,0,2);
					newBullet.graphics.endFill();
					newBullet.x = turret.x;//<--получается выстрел берет 
					newBullet.y = turret.y;//<--координаты с последней башни
					newBullet.addEventListener(Event.ENTER_FRAME,eFrame);
					addChild(newBullet);
				}
			}
			if(!loaded2){
				cTime2 ++;
				if(cTime2 == reloadTime2){
					loaded2 = true;
					cTime2 = 0;
				}
			}
		}
		private function eFrame(e:Event):void {
			var newBullet2:Sprite = Sprite(e.target);
			if (enTarget == null ) {
				if(newBullet2.parent){
					newBullet2.parent.removeChild(newBullet2); }
				newBullet2.removeEventListener(Event.ENTER_FRAME, eFrame);
			}else{
				var yDist:Number=enTarget.y+12.5 - newBullet2.y;
				var xDist:Number=enTarget.x+12.5 - newBullet2.x;
				var angle:Number=Math.atan2(yDist,xDist);
				ySpeedBul=Math.sin(angle) * maxSpeedBul;
				xSpeedBul=Math.cos(angle) * maxSpeedBul;
				newBullet2.x+= xSpeedBul;
				newBullet2.y+= ySpeedBul;
				if(newBullet2.hitTestObject(enTarget)){
					enTarget.health -= damage;
					if(newBullet2.parent){
						newBullet2.parent.removeChild(newBullet2); 
					}
					newBullet2.removeEventListener(Event.ENTER_FRAME, eFrame);
					}
				}
			}
Тоесть ставлю две башни и все выстрелы идут со второй башни :\
Предпологаю что нужен под каждую башню определенный спрайт, от которого из них будут идти выстрелы,пока-что не могу понять как... Нужна ваша помощь

Добавлено через 28 часов 37 минут
Все еще нужно решение :\