Как отсортировать массив мувиклипов на основе положения мувиклипа х по событию mouse_up AS3 - PullRequest
0 голосов
/ 01 июня 2018

Я создаю игру перетаскивания так, чтобы комбинация плиток мувиклипа определяла ответ.Чтобы определить ответ, я объединяю movieclip name и movieclip position in ORDER .

public function drop(event: MouseEvent) {
       event.target.stopDrag();
       flag = false;
       trace(event.target.name);
       tileDropped = event.target.name;
       //When the tile is dropped at the supposed position, push target (tile) into picked_ans array            
       for (ix = 0; ix < targetArray.length; ix++) {

         if (targetArray[ix].hitTestObject(event.target)) {
            event.target.x = targetArray[ix].x;
            event.target.y = targetArray[ix].y;
            flag = true;
            picked_ans.push(event.target);  //add tile to picked_ans    
        }
      } //for i

      // Remove duplicates from picked array 
      if (picked_ans.length > 1)        
        for (var j = 0; j < picked_ans.length; j++){
            if(tileDropped == picked_ans[j].name){
                picked_ans.splice(j, 1);
                picked_ans.push(event.target);  
            }           
        }
        if (gameStats == 1){
        //if gameStats == 1, there should be only one movieclip in the array
            if (picked_ans.length > 0){
                for (ix = 0; ix < picked_ans.length; ix++){
                    picked_ans.pop();
                }
            }
            picked_ans.push(event.target);
        }

        for (ix = 0; ix < tileArray.length; ix++) {
            if ((tileArray[ix].hitTestObject(event.target)) && (tileArray[ix] != event.target)) {
                flag = false;
            }
        } //for i
        if (!flag) {
            event.target.x = event.target.original_posx;
            event.target.y = event.target.original_posy;
        }
      } //drop

то, чего я хочу достичь, лучше всего описать ниже

if(picked_ans > 0){    
  dropped_tile_pos_x = picked_ans.length;
  for(var i = 0; i < dropped_tile_pos_x; i++){
      //Here is the problem
      if(event.target.x > picked_ans[i].x){
          //sort picked_ans array and insert current picked tile (event.target)
          //to the proper index location
          //something like
          picked_ans[i + 1] = event.target;
       }else{
          picked_ans[i - 1] = event.target;
       }
    }
 }

в двух словах: как я могу отсортировать массив pick_ans на лету каждый раз, когда плитка сбрасывается?

Я видел что-то вроде этого

myArray = [name: "tilename", posx:"234"]

Для меня это будет намного более простой способ сортировки массива с помощью свойства posx, если кто-то может сказать мне, как создать такой массив в цикле вместожесткое кодирование, как указано выше.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...