首页 > 解决方案 > 如何根据 mouse_up 事件 AS3 上的动画剪辑 x 位置对动画剪辑数组进行排序

问题描述

我正在创建一个拖放游戏,这样电影剪辑图块的组合将决定答案。为了确定答案,我在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 属性对数组进行排序的方法。谢谢

标签: javascriptactionscript-3flash

解决方案


推荐阅读