PDA

Просмотр полной версии : Не отображается ДО


Akopalipsis
05.10.2013, 03:22
Вобщем чтобы немного отвлечься от книги, я решил попробовать сделать игру из соседней темы.
Только начал и сразу ошибка, как я подумал... Начал искать и наткнулся на то, что не могу обьяснить.
Вот код, коментарии в нем:
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);
}
}

}

}

caseyryan
05.10.2013, 08:26
он отображается, только за педелами видимой части сцены.
Проблема в методе addConvas(), там координаты задаются такие, что этот квадрат уходит за пределы экрана
Если ту строчку закомментировать, то в метод addConvas передастся пустой массив, и, естественно, ничего не произойдет

п.с. не convas, а canvas ;)

Akopalipsis
05.10.2013, 14:15
caseyryan Спасибо! Второй раз я себя ловлю на том, что если переутомиться голова вообще отключается)