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

Регистрация: Mar 2011
Сообщений: 40
Question Не могу понять где ошибка

Здравствуйте, уважаемые форумчане, сегодня столкнулся с следующей проблемой: на сцене создается танк и турелька. По замыслу турель должна стрелять по танку и при попадании снаряд должен исчезать(делал через хитТестОбжект), но в итоге снаряд не исчезает, а в ошибках выводится Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
вот код класса турели

Код AS3:
package 
{
 
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	//import Main;
 
	public class gatlingGun extends MovieClip
	{
		//public var range:Sprite;
		public var _X,_Y:Number;
		private var delay = 10;
		private var begin_rld = 11;
		public var rng = 300;
		public function gatlingGun(X:Number,Y:Number):void
		{
			this.x = X;
			this.y = Y;
		}
		public function aim(b:MovieClip)
		{
			this.rotation = Math.atan2(b.y - this.y,b.x - this.x) / Math.PI * 180;
		}
 
		public function shoot(t:Boolean,mc:MovieClip)
		{
			if (begin_rld <= delay)
			{
				begin_rld++;
			}
			if ((begin_rld>delay)&&(t))
			{
				var b:bullet = new bullet(0,0,0);
				this.barrel1.addChildAt(b,0);
				var c:bullet = new bullet(0,0,0);
				this.barrel2.addChildAt(c,0);
				begin_rld = 0;
			}
			if (! t)
			{
				begin_rld++;
			}
			if (b.hitTestObject(mc))
			{
				b.kill();
			}
			if (b.hitTestObject(mc))
			{
				b.kill();
			}
 
		}
 
		public function inrange(b:MovieClip):Boolean
		{
			var x0 = b.x,y0 = b.y;
			var g=Math.sqrt(Math.pow((this.x-x0),2)+Math.pow((this.y-y0),2));
			if (g < rng)
			{
				return true;
			}
			if (g > rng)
			{
				return false;
			}
			return false;
		}
 
	}
 
}
и класса снаряда
Код AS3:
package {
 
	import flash.display.MovieClip;
	import flash.events.Event;
 
	public class bullet extends MovieClip {
		var X1,Y1,A1:Number;
		var speed;
		var thisBul:MovieClip;
		var thispar:*;
		public function bullet(X:Number,Y:int,A:Number) {
			this.x=X;
			this.y=Y;
			//trace(this.y);
			this.rotation=A;
			this.addEventListener(Event.ADDED,init);
		}
		function init(e:Event):void {
			speed=50;
			thispar= e.currentTarget.parent;
			thisBul = MovieClip(this.parent.getChildByName(this.name));
			addEventListener(Event.ENTER_FRAME, movb);
		}
		function movb(e:Event) {
			A1= (this.rotation)/180*Math.PI; 
			this.x+=Math.cos(A1)*speed;
			this.y+=Math.sin(A1)*speed;
 
		if(this.x<0||this.x>stage.stageWidth||this.y<0||this.y>stage.stageHeight) kill();
		}
		public function kill() {
	    	removeEventListener(Event.ENTER_FRAME, movb); 
			this.parent.removeChild(thisBul);
		}
	}
}
что я не правильно сделал?