Вобщем чтобы немного отвлечься от книги, я решил попробовать сделать игру из соседней темы.
Только начал и сразу ошибка, как я подумал... Начал искать и наткнулся на то, что не могу обьяснить.
Вот код, коментарии в нем:

Код AS3:
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
public class GameCube extends Sprite
{
private var _cubeStorage:Array;
private var _cube:Sprite;
private var _colorStorage:Array = [0x598CD9, 0x59D966, 0xDBD157, 0xDC6756];
private const START_NUM_CUBE:int = 50;
private var END_CONVAS:int;
private var GAME:Boolean = false;
private const MOVE_LEFT_COUNT:int = 3;
private var CHEC_MOVE_LEFT_COUNT:int = 0;
private const FLOOR:int = 500;
private const MAXIMUM_POST:int = 10;
private var CHEC_MAXIMUM_POST:int = 0;
private var SEVE_COORDINATES_X:int = 0;
private var _stackCubesNum:int = 10;
private var _convasWidth:int;
private var _covasHeight:int;
private const CUBE_WIDTH:int = 15;
private const CUBE_HEIGHT:int = 15;
private var _convas:Sprite;
public function GameCube()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_convasWidth = stage.stageWidth;
_covasHeight = stage.stageHeight;
_convas = new Sprite();
super.addChild(_convas);
_convas.x = _convasWidth;
_convas.y = FLOOR;
END_CONVAS = _convasWidth - 300;
_cubeStorage = new Array();
this.createCube(START_NUM_CUBE);
}
private function createCube($n:int):void
{
var timeCubeStorage:Array = [];
for (var i:int = 0; i < $n; i++)
{
_cube = new Sprite();
_cube.graphics.beginFill(0xDC6756);
_cube.graphics.drawRect(0, 0, 100, 100);
_cube.graphics.endFill();
addChild(_cube);
/*
* Почему если закомментировать следующую строчку, то обьект отображается
* а если не комментировать, то не показывается?
*/
timeCubeStorage[i] = _cube;
}
this.addConvas(timeCubeStorage);
}
private function addConvas($cubesStorage:Array):void
{
var length:int = $cubesStorage.length;
for (var i:int = 0; i < length; i++)
{
_cubeStorage[i] = $cubesStorage[i];
_cubeStorage[i].x = _convasWidth + CUBE_WIDTH + SEVE_COORDINATES_X;
_cubeStorage[i].y = _covasHeight - FLOOR + CUBE_HEIGHT;
if (CHEC_MAXIMUM_POST !== MAXIMUM_POST)
{
CHEC_MAXIMUM_POST++;
SEVE_COORDINATES_X += CUBE_WIDTH;
}
else
{
CHEC_MAXIMUM_POST = 0;
SEVE_COORDINATES_X = 0;
_convas.x -= CUBE_WIDTH;
}
_convas.addChild(_cubeStorage[i] as DisplayObject);
}
}
}
}