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

Регистрация: Jun 2014
Сообщений: 558
explбольшое спасибо, буду разбираться
но всё же хотел уточнить по своему коду, т.к. думаю, что это пулл или разубедите меня)

в этой части кода идёт проверка на событие - выход за сцену, если событие обнаруженно, то я удаляю слушатель событий энтер_фрейм для bullet(без него она не летит, увы), долее вызываю vectorBullet.fn_push_pool(i), передавая туда индекс bullet с событием, в public function fn_push_pool (i):void{ я создаю новую ссылку на bullet в вектор, далее удаляю ссылку с индексом экземпляра bullet вектора который вышел за сцену
Код AS3:
public function fn_null_bullet(e: Event): void {
			var i = vectorBullet.vectorPool.length;
			while (--i > -1) {
				if (vectorBullet.vectorPool[i] != null) {
					if (vectorBullet.vectorPool[i].stage != null) {
						if (vectorBullet.vectorPool[i].y > stageX || vectorBullet.vectorPool[i].y < 150 || vectorBullet.vectorPool[i].x > stageY || vectorBullet.vectorPool[i].x < 10) {
							_stage.removeEventListener(Event.ENTER_FRAME, vectorBullet.vectorPool[i].fn_speed);
							vectorBullet.fn_push_pool(i);
							_stage.removeChild(vectorBullet.vectorPool[i]);
							vectorBullet.vectorPool[i] = null;
							vectorBullet.vectorPool.splice(i, 1);
							--gl_variable.index_bullet;
						}
					}
				}
			}
		}
собственно я тут не создаю новый объект, просто меняю ссылки, уверен, можно проще, но пока так, минусы в производительности мне трудно оценить, так как я в процессе игры дергаю вектор
Код AS3:
}
		public function fn_push_pool (i):void{
			vectorPool.push(vectorPool[i]);
 
		}
а вот этот отрывок нужен, если длинна пула недостаточна, т.к. количество bullet у меня зависит лишь от скорости нажатия на клавишу (вдруг чего поменяю, типо двойные выстрелы), а пул тогда сам в процессе игры растянется
Код AS3:
public function fn_add_pool ():void{
			var vectorMovieClip = movieClip;
			vectorPool.push(vectorMovieClip);
		}