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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.

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

Сообщение MrDead » 20 мар 2014, 20:10

  1. public function createWall():void
  2.         {
  3.        
  4.                 switch (arr)
  5.                 {
  6.                     case 1:
  7.                         var line_1:Sprite = new sprite_ss);
  8.                         line_1.x = 0;
  9.                         line_1.y = 0;
  10.                         addChild(line_1);
  11.                        
  12.                         break;
  13.                 }
  14. }

Есть массив такого вида
arr({id:0});

Как мне присвоить case 1 - id?
MrDead

 
Автор темы
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Glango » 20 мар 2014, 20:13

Можно сделать так
  1.  
  2.  
  3. arr = [0, 1, 2, 3, 4, 5, 6...n];
  4.  
  5. public function createWall(id:uint):void
  6.         {
  7.        
  8.                 switch (arr[id])
  9.                 {
  10.                     case 1:
  11.                         var line_1:Sprite = new sprite_ss);
  12.                         line_1.x = 0;
  13.                         line_1.y = 0;
  14.                         addChild(line_1);
  15.                        
  16.                         break;
  17.                 }
  18. }
  19.  
  20.  
  21.  


Конечно, если бы рассказали для чего это, то может быть нашлось другое решение

За это сообщение автора Glango поблагодарил:
MrDead
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

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

Сообщение MrDead » 20 мар 2014, 20:22

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

 
Автор темы
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.

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

Сообщение Glango » 20 мар 2014, 21:03

Может тогда сделать с объектами?

  1.  
  2.  
  3. private var cell:Object;
  4.  
  5. public function init():void {
  6.    cell = new Object();
  7. }
  8.  
  9. //Здесь создаем объект, который будет потом вызываться через id
  10. public function createCell(id:String, x:Number, y:Number):void {
  11.   cell[id] = new Object();
  12.   cell[id].x = x;
  13.   cell[id].y = y;
  14. }
  15.  
  16. public function createWall(id:String):void {
  17.      if(!cell[id]) return;
  18.      var line_1:Sprite = new sprite_ss);
  19.      line_1.x = cell[id].x;
  20.      line_1.y = cell[id].y;
  21.      addChild(line_1);  
  22. }
  23.  
  24.  
  25.  
  26.  
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

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

Сообщение Glango » 20 мар 2014, 21:04

А ячейки будут располагаться как сетка?
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

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

Сообщение MrDead » 20 мар 2014, 21:17

ячейки будут располагаться как сетка?

Да. Мне сказали сделать Switch по всем вариантам, каждому присвоить свой ID. И потом в массиве указывать не просто 1 а этот ID
внутри switch - идет созданиие нужного вида ячейки. Только какой массив, точнее как потом вывести по нужному ID правильный кейс, что-то недопонял
MrDead

 
Автор темы
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.

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

Сообщение Glango » 20 мар 2014, 21:38

если в массиве будет объект, то к свойству id можно так подобраться,
  1.  
  2. var sd:Array = new Array();
  3. sd = [ { id:0 }, { id:1 }, { id:3 } ];
  4.            
  5. for each(var key in sd) {
  6.                
  7.     switch(key.id) {
  8.                    
  9.         case 0:
  10.           trace('Case 0');
  11.         break;
  12.                    
  13.         case 1:
  14.           //делаем что-нибудь при ид 1
  15.         break;
  16.                    
  17.         case 3:
  18.         //при ид 3
  19.         break;
  20.                    
  21.         default:
  22.                    
  23.             trace('Def = ' + key.id);
  24.         break;
  25.     }
  26.                
  27.                
  28. }
  29.  
  30.  



Можно, конечно, использовать то, что ячейки в виде сетки, и они располагаются в определенном порядке.
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

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

Сообщение MrDead » 20 мар 2014, 21:48

Можно, конечно, использовать то, что ячейки в виде сетки, и они располагаются в определенном порядке.

Вот мне и надо как раз в определенном порядке.

  1. public var map:Array = [
  2.            [0,1,1,1,0],
  3.            [0,0,0,0,0],
  4.            ];
  5.  
  6. function createmaps()
  7.            {
  8. for (var i:uint=0; i<map.length; i++)
  9.        {
  10.         for (var j:uint=0; j<map[i].length; j++)
  11.         {
  12.          if (map[i][j] > 0)
  13.          {
  14.           var obj:village = new mc_object;
  15.           obj.x = j*size;
  16.           obj.y = i*size;
  17.           obj.gotoAndStop(map[i][j])
  18.           addChild(obj);
  19.       }
  20.         }
  21.       }
  22. }


По такой же схеме. В данном коде, там где 0 - это пустые ячейки, там где 1 - это объекты. Но вот что-то не особо понимаю, как сделать также, только с объектами которые в кейсах, дабы вместо 0-1(в верхнем варианте)должны быть их айдишники и пустив по циклу, создались те объекты, которые соответствуют тем, что в кейсах)
MrDead

 
Автор темы
Сообщения: 103
Зарегистрирован: 13 сен 2012, 00:46
Благодарил (а): 20 раз.
Поблагодарили: 0 раз.

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

Сообщение Glango » 20 мар 2014, 21:56

а карта сама квадратная? Или допускается возможность, что будет и прямоугольная?
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

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

Сообщение Glango » 20 мар 2014, 22:16

можно попробовать это


  1.  
  2. var map:Array = [
  3.              {id:0},  {id:1},  {id:0}, {id:0},
  4.              {id:0},  {id:3}, {id:0},  {id:0},
  5.              {id:0},  {id:0}, {id:3},  {id:0},
  6.             {id:0},  {id:1}, {id:0},  {id:0},
  7.             {id:0},  {id:0}, {id:1},  {id:0}
  8.             ];
  9.            
  10. for (var i:uint = 0; i < map.length; i++){
  11.            
  12.  var pos:Number = i + 1;
  13.            
  14.  var ccc:Number = pos % 4; // 4 - ширина карты
  15.  
  16.  var unitposition:uint = Math.floor((pos - 1) / 4);
  17.  
  18.  var posX:uint = pos - (4 * unitposition);
  19.  posX -= 1;
  20.  drawPic(map[i], posX * size, unitposition * size);
  21. }
  22.  
  23. private function drawPic(obj:Object, x:uint, y:uint):void{
  24.    switch(obj.id) {
  25.     case 0:
  26.       var line_1:Sprite = new sprite_ss);
  27.           line_1.x = x;
  28.           line_1.y = y;
  29.           addChild(line_1);
  30.     break;
  31.                    
  32.     case 1:
  33.                        
  34.     break;
  35.                    
  36.     case 3:
  37.                    
  38.     break;
  39.                    
  40.     default:
  41.    
  42.     break;
  43. }
  44.  
  45.  
  46. }
  47.  
  48.  

За это сообщение автора Glango поблагодарил:
MrDead
Glango

 
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00
Благодарил (а): 3 раз.
Поблагодарили: 3 раз.

След.

Вернуться в Программирование на Flash



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron