Здравствуйте, столкнулся с проблемой. Плиз хелпи ми ))
As3 изучаю не так давно
Собственно трабла:
Есть Document Class

Код AS3:
package {
import flash.display.Sprite;
// Класс Tetris
public class Tetris extends Sprite {
public var play_screen:Game;
// Конструктор
public function Tetris() {
play_the_game();
}
public function play_the_game() {
if (play_screen) {
removeChild(play_screen);
play_screen = null;
}
play_screen = new Game(this);
addChild(play_screen);
}
}
}
далее есть класс Game:

Код AS3:
package {
import flash.display.Stage;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.events.*;
public class Game extends Sprite {
public var main_class:Tetris;
var block:BlockType;
// Конструктор класса Game
public function Game(passed_class:Tetris)
{
main_class = passed_class;
addEventListener(Event.ENTER_FRAME, render, false, 0, true);
} // Game
function render(e:Event):void {
if (!isBlock)
{
// пробуем сгенерировать одну фигуру
block = new BlockType(this);
main_class.stage.addChild(block);
}
} // render()
}
}
Далее класс BlockType:

Код AS3:
package {// Класс для типов блоков, фигур
import flash.display.Stage;
import flash.display.Sprite;
import flash.events.*;
import flash.ui.*;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class BlockType extends Sprite{
private var gameClass:Game;
var stageRef:Stage;
// конструктор
public function BlockType (Cls:Game): void
{
gameClass = Cls;
this.stageRef = gameClass.stage;
makeBlock();
} // BlockType
// строим блок на сцене
function makeBlock ()
{
for (var i:int = 0; i < 4; i++)
for(var j:int = 0 ; j < 4; j++)
{
if(bMatrix[i] != null)
if (bMatrix[i][j] != null && bMatrix[i][j] == 1)
{
var box:Box = new Box(this.stageRef);
box.x = j*20;
box.y = i*20;
this.addChild(box);
boxArray.push(box);
}
}
} // makeBlock()
function timerHandler (e:Event)
{
// удаляем боксы
for each (var obj:* in boxArray)
{
gameClass.tetrisMatrix[(obj.x+this.x)/20][(obj.y+this.y)/20] = obj;
obj.removeSelf();
removeSelf();
}
} // timerHandler()
// удаление блока
private function removeSelf() : void
{
if (gameClass.contains(this))
gameClass.removeChild(this);
} // removeSelf()
}
}
Далее класс Box:

Код AS3:
package {
import flash.display.Sprite;
import flash.display.Stage;
public class Box extends Sprite {
private var stageRef:Stage;
// Конструктор класса Box
public function Box(stageRef:Stage)
{
this.stageRef = stageRef
} // Box
// удаление бокса
public function removeSelf() : void
{
// if (stageRef.contains(this))
stageRef.removeChild(this);
} // removeSelf()
}
}
Выводит ошибку:

Код AS3:
ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
Бокс не удаляется. Парюсь и не пойму че к чему.
Косяк именно в методе removeSelf класса Box.