Показать сообщение отдельно
Старый 06.09.2011, 13:31
reQuiem вне форума Посмотреть профиль Отправить личное сообщение для reQuiem Найти все сообщения от reQuiem
  № 1  
Ответить с цитированием
reQuiem

Регистрация: Aug 2011
Сообщений: 29
The bomb! Бомба - проблема с таймером в классе.

Привет!
Помогите, пожалуйста, справиться со следующей проблемой.


В кадре на maintimeline есть я создаю экземпляр класса bomb и помещаю его в массив.
В классе прописан алгоритм движения объекта а из кадра на таймлайне я вызываю апдейт массива с бомбами и проверяю циклом столкновения. Все работает хорошо.
Но я хочу ограничить время жизни бомбы. Для этого в классе бомбы создаю функцию уничтожения и таймер вызывающий эту функцию. И не работает во первых не создается таймер, выдает ошибку "bomb.as, Line 14 1120: Access of undefined property bombTimer."
и во-вторых не получается обратиться к переменным созданным на таймлайне "bomb.as, Line 33 1120: Access of undefined property bombs_arr."


Надеюсь вы поможете мне разобраться.

код класса бомба

Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.events.TimerEvent; 
	import flash.utils.Timer; 
	public class bomb extends MovieClip
	{
 
		public var bombSpeedX:Number=0;
		public var bombSpeedY:Number=0;
		public var goalX:Number;
		public var goalY:Number;
		public var bombTimer:Timer = new Timer(9000);
		bombTimer.addEventListener(TimerEvent.TIMER_COMPLETE, bombTimeOver); 
		bombTimer.start();
 
		public function bomb()
		{
			this.x=-5;
			this.y=-5;
		}
 
 
		public function bombTimeOver()
		{
			parent.removeChild(this);
			stage.bombs_arr.splice(this,1);
			stage.numOfBombs = bombs_arr.length;
 
 
		}
 
		public function update():void
		{
			this.x+=bombSpeedX;
			this.y+=bombSpeedY;
 
			if(this.x < goalX)
			{
				if(bombSpeedX<3)
				{
					this.bombSpeedX+=0.25;
				}
 
			}
			else
			{
				if(bombSpeedX>-3)
				{
					this.bombSpeedX-=0.25;
				}
			}
 
			if(this.y < goalY)
			{
				if(bombSpeedY<3)
				{
					this.bombSpeedY+=0.25;
				}
 
			}
			else
			{
				if(bombSpeedY>-3)
				{
					this.bombSpeedY-=0.25;
				}
			}
		}
	}
}

кусочек кода с таймлайна

Код AS3:
var numOfBombs:Number=0;
var bombs_arr:Array = new Array();
var bomb_1 :bomb = new bomb();
addChildAt(bomb_1,8);
bombs_arr.push(bomb_1);
numOfBombs++ ;
Спасибо!