Показать сообщение отдельно
Старый 06.12.2012, 21:01
PasserBy вне форума Посмотреть профиль Найти все сообщения от PasserBy
  № 1  
Ответить с цитированием
PasserBy
Banned

Регистрация: Nov 2012
Сообщений: 43
Arrow Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего

Режим отладки
Код:
ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
	at flash.display::DisplayObjectContainer/removeChild()
	at src::Bullet/clearBullet()[E:\FlashWorks\FerdnProject\src\Bullet.as:69]
	at src::Enemy/delBullets()[E:\FlashWorks\FerdnProject\src\Enemy.as:90]
Код AS3:
package src {
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.display.Shape;
	import flash.display.MovieClip;
	import flash.events.Event;
    import flash.events.MouseEvent;
 
	public class Bullet extends MovieClip{
	private var speedx:Number = 0;
	private var speedy:Number = 0;
	private var DEFAULT_BUL_SIZE:int = 6;
	private var DEFAULT_LIFE:int = 150; //Количество фремов к-е будет жить пуля 
	private var DEFAULT_COLOR:uint = 0xFFCC66;
	private var TAKE_POSITIONX:int;
	private var TAKE_POSITIONY:int;
	private var BULLET:*;
 
		public function Bullet(TAKE_X:int, TAKE_Y:int) {
			var bullet:Sprite = new Sprite();
			BULLET = bullet;
			TAKE_POSITIONX = TAKE_X;
			TAKE_POSITIONY = TAKE_Y;
			bullet.graphics.lineStyle(0,DEFAULT_COLOR,0);
			bullet.graphics.beginFill(DEFAULT_COLOR, 1);
			bullet.graphics.drawRect(TAKE_POSITIONX, TAKE_POSITIONY, DEFAULT_BUL_SIZE, DEFAULT_BUL_SIZE);
			bullet.graphics.endFill();
			addChild(BULLET);
 
			addEventListener(Event.ADDED, funcAttack);
			addEventListener(Event.ENTER_FRAME, polet);
		}
 
		private function funcAttack(event:Event):void{
			this.x += DEFAULT_BUL_SIZE/2;
			this.y += DEFAULT_BUL_SIZE/2;
 
			var xc:Number = mouseX - TAKE_POSITIONX;	
			var yc:Number = mouseY - TAKE_POSITIONY;
			var tan:*;
			var ugol:*;
 
			if(mouseX > TAKE_POSITIONX){
				tan = yc/xc; 
				ugol = Math.atan(tan)*57;
			}
			if(mouseX < TAKE_POSITIONX){
				tan = yc/xc; 
				ugol = Math.atan(tan)*57;
			}
 
			if(mouseX > TAKE_POSITIONX){
				speedx = 7*Math.cos(ugol*(Math.PI/180));
				speedy = 7*Math.sin(ugol*(Math.PI/180));
			}
 
			if(mouseX < TAKE_POSITIONX){
				speedx = -7*Math.cos(ugol*(Math.PI/180));
				speedy = -7*Math.sin(ugol*(Math.PI/180));
			}
		}	
 
		private function polet(e:Event):void{
			this.x += speedx / 2;
			this.y += speedy / 2;
		}
 
		public function clearBullet():void{
			removeChild(BULLET); //69 СТРОКА ЗДЕСЬ
 
			removeEventListener(Event.ADDED, funcAttack);
			removeEventListener(Event.ENTER_FRAME, polet);
		}
	}
}
Я таки не пойму в чем проблема, в иных классах removeChild работает вне функции где был addChild