![]() |
|
||||||||||
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вобщем чтобы немного отвлечься от книги, я решил попробовать сделать игру из соседней темы.
Только начал и сразу ошибка, как я подумал... Начал искать и наткнулся на то, что не могу обьяснить. Вот код, коментарии в нем: 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); } } } } |
|
|||||
|
он отображается, только за педелами видимой части сцены.
Проблема в методе addConvas(), там координаты задаются такие, что этот квадрат уходит за пределы экрана Если ту строчку закомментировать, то в метод addConvas передастся пустой массив, и, естественно, ничего не произойдет п.с. не convas, а canvas ![]() |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
caseyryan Спасибо! Второй раз я себя ловлю на том, что если переутомиться голова вообще отключается)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 05:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|