Помогите с массивами

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
MrDead
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46

Помогите с массивами

Сообщение 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?
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение 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;                }}   
Конечно, если бы рассказали для чего это, то может быть нашлось другое решение
MrDead
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46

Re: Помогите с массивами

Сообщение MrDead »

Glango
Есть несколько видов однообразной картинки(различие лишь в их ротации). Мне надо грамотнее сделать их помещение на сцену по ID, в правильном порядке. 1 картинка = 1 ячейка. Но т.к объектов(которые состоят из этих ячеек) более двадцати, то надо засунуть все виды в кейсы, дать им id, а потом в правильном порядке выкладывать на сцену по форме основного объекта)
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение 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);   }    
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение Glango »

А ячейки будут располагаться как сетка?
MrDead
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46

Re: Помогите с массивами

Сообщение MrDead »

ячейки будут располагаться как сетка?
Да. Мне сказали сделать Switch по всем вариантам, каждому присвоить свой ID. И потом в массиве указывать не просто 1 а этот ID
внутри switch - идет созданиие нужного вида ячейки. Только какой массив, точнее как потом вывести по нужному ID правильный кейс, что-то недопонял
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение 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;    }                                }  

Можно, конечно, использовать то, что ячейки в виде сетки, и они располагаются в определенном порядке.
MrDead
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46

Re: Помогите с массивами

Сообщение 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(в верхнем варианте)должны быть их айдишники и пустив по циклу, создались те объекты, которые соответствуют тем, что в кейсах)
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение Glango »

а карта сама квадратная? Или допускается возможность, что будет и прямоугольная?
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: Помогите с массивами

Сообщение 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;}  }  
Ответить