Страница 1 из 2
Помогите с массивами
Добавлено: 20 мар 2014, 20:10
MrDead
Код: Выделить всё
public function createWall():void { switch (arr) { case 1: var line_1:Sprite = new sprite_ss); line_1.x = 0; line_1.y = 0; addChild(line_1); break; }}
Есть массив такого вида
arr({id:0});
Как мне присвоить case 1 - id?
Re: Помогите с массивами
Добавлено: 20 мар 2014, 20:13
Glango
Можно сделать так
Код: Выделить всё
arr = [0, 1, 2, 3, 4, 5, 6...n]; public function createWall(id:uint):void { switch (arr[id]) { case 1: var line_1:Sprite = new sprite_ss); line_1.x = 0; line_1.y = 0; addChild(line_1); break; }}
Конечно, если бы рассказали для чего это, то может быть нашлось другое решение
Re: Помогите с массивами
Добавлено: 20 мар 2014, 20:22
MrDead
Glango
Есть несколько видов однообразной картинки(различие лишь в их ротации). Мне надо грамотнее сделать их помещение на сцену по ID, в правильном порядке. 1 картинка = 1 ячейка. Но т.к объектов(которые состоят из этих ячеек) более двадцати, то надо засунуть все виды в кейсы, дать им id, а потом в правильном порядке выкладывать на сцену по форме основного объекта)
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:03
Glango
Может тогда сделать с объектами?
Код: Выделить всё
private var cell:Object; public function init():void { cell = new Object();} //Здесь создаем объект, который будет потом вызываться через idpublic function createCell(id:String, x:Number, y:Number):void { cell[id] = new Object(); cell[id].x = x; cell[id].y = y;} public function createWall(id:String):void { if(!cell[id]) return; var line_1:Sprite = new sprite_ss); line_1.x = cell[id].x; line_1.y = cell[id].y; addChild(line_1); }
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:04
Glango
А ячейки будут располагаться как сетка?
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:17
MrDead
ячейки будут располагаться как сетка?
Да. Мне сказали сделать Switch по всем вариантам, каждому присвоить свой ID. И потом в массиве указывать не просто 1 а этот ID
внутри switch - идет созданиие нужного вида ячейки. Только какой массив, точнее как потом вывести по нужному ID правильный кейс, что-то недопонял
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:38
Glango
если в массиве будет объект, то к свойству id можно так подобраться,
Код: Выделить всё
var sd:Array = new Array();sd = [ { id:0 }, { id:1 }, { id:3 } ]; for each(var key in sd) { switch(key.id) { case 0: trace('Case 0'); break; case 1: //делаем что-нибудь при ид 1 break; case 3: //при ид 3 break; default: trace('Def = ' + key.id); break; } }
Можно, конечно, использовать то, что ячейки в виде сетки, и они располагаются в определенном порядке.
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:48
MrDead
Можно, конечно, использовать то, что ячейки в виде сетки, и они располагаются в определенном порядке.
Вот мне и надо как раз в определенном порядке.
Код: Выделить всё
public var map:Array = [ [0,1,1,1,0], [0,0,0,0,0], ]; function createmaps() { for (var i:uint=0; i<map.length; i++) { for (var j:uint=0; j<map[i].length; j++) { if (map[i][j] > 0) { var obj:village = new mc_object; obj.x = j*size; obj.y = i*size; obj.gotoAndStop(map[i][j]) addChild(obj); } } } }
По такой же схеме. В данном коде, там где 0 - это пустые ячейки, там где 1 - это объекты. Но вот что-то не особо понимаю, как сделать также, только с объектами которые в кейсах, дабы вместо 0-1(в верхнем варианте)должны быть их айдишники и пустив по циклу, создались те объекты, которые соответствуют тем, что в кейсах)
Re: Помогите с массивами
Добавлено: 20 мар 2014, 21:56
Glango
а карта сама квадратная? Или допускается возможность, что будет и прямоугольная?
Re: Помогите с массивами
Добавлено: 20 мар 2014, 22:16
Glango
можно попробовать это
Код: Выделить всё
var map:Array = [ {id:0}, {id:1}, {id:0}, {id:0}, {id:0}, {id:3}, {id:0}, {id:0}, {id:0}, {id:0}, {id:3}, {id:0}, {id:0}, {id:1}, {id:0}, {id:0}, {id:0}, {id:0}, {id:1}, {id:0} ]; for (var i:uint = 0; i < map.length; i++){ var pos:Number = i + 1; var ccc:Number = pos % 4; // 4 - ширина карты var unitposition:uint = Math.floor((pos - 1) / 4); var posX:uint = pos - (4 * unitposition); posX -= 1; drawPic(map[i], posX * size, unitposition * size);} private function drawPic(obj:Object, x:uint, y:uint):void{ switch(obj.id) { case 0: var line_1:Sprite = new sprite_ss); line_1.x = x; line_1.y = y; addChild(line_1); break; case 1: break; case 3: break; default: break;} }