0

早上好,我有一个网格 ( bankgrid) 由一个使用var bankArray:ArrayArray 的值生成的网格 ( ) 由 gotoAndStop(那个数字 ( f)) 显示一个彩色网格。所有方块都是来自同一个 MovieClip( ) 的子元素,在数组中TBank一个接一个地生成水平 ( i) 和垂直 ( ) 位置。j我试图让方块可拖动......徒劳无功:

var bankgrille:MovieClip = new MovieClip();
var bankList:Vector.<TBank> = new Vector.<TBank>();

var bankArray:Array = [
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,1,0,0,0,0,0],
                     [0,0,2,0,1,0,0,0],
                     [0,2,2,2,2,0,0,0],
                     [0,1,2,2,1,0,0,0],
                     [0,2,1,1,2,1,1,0]
                     ];
var bankstock:Array = [
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0]
                     ];

function colorBank():void {
    for (var i:int=0; i<8; i++){                                    // boucle sur les 20 colonnes
        for (var j:int=0; j<8; j++){                                // boucle sur les 15 lignes de chaque colonne
            var f:int = bankArray[j][i]                             // valeur de la case

            if(f > 0)
            {                                                       // si la valeur de la case est supérieure à 0
                var tBank:TBank = new TBank()
                bankList.push(tBank);
                // création du modèle
                tBank.x = 320+i*20;                                     // position sur X
                tBank.y = 100+j*20;                                     // position sur Y
                tBank.gotoAndStop(f);
                bankgrille.addChild(tBank); 

            }

            else 
            {
                bankstock[j][i] = []                                
            }

        }
    }
}
colorBank();
addChild(bankgrille);

我未来的项目(也许让我的问题更有意义):'在那之后,我想允许将方块拖到另一个阵列上以更改第二个颜色'

4

2 回答 2

1

startDrag()在拖动影片剪辑时,这是一个很好的起点。

您可以将MouseEvent侦听器分配给整个网格并使用以下方法拖动特定元素event.currentTarget

bankgrille.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
bankgrille.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

function onMouseDown(e:MouseEvent):void
{
  e.currentTarget.startDrag();
}

function onMouseUp(e:MouseEvent):void
{
  e.currentTarget.stopDrag();
}
于 2013-02-14T15:00:32.523 回答
0

瞧!再次感谢西姆!

var bankgrille:MovieClip = new MovieClip();
var bankList:Vector.<TBank> = new Vector.<TBank>();

var bankArray:Array = [
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,1,0,0,0,0,0],
                     [0,0,2,0,1,0,0,0],
                     [0,2,2,2,2,0,0,0],
                     [0,1,2,2,1,0,0,0],
                     [0,2,1,1,2,1,1,0]
                     ];
var bankstock:Array = [
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0],
                     [0,0,0,0,0,0,0,0]
                     ];

function colorBank():void {
    for (var i:int=0; i<8; i++){                                    // boucle sur les 20 colonnes
        for (var j:int=0; j<8; j++){                                // boucle sur les 15 lignes de chaque colonne
            var f:int = bankArray[j][i]                             // valeur de la case

            if(f > 0)
            {                                                       // si la valeur de la case est supérieure à 0
                var tBank:TBank = new TBank()
                bankList.push(tBank);
                // création du modèle
                tBank.x = 320+i*20;                                     // position sur X
                tBank.y = 100+j*20;                                     // position sur Y
                tBank.gotoAndStop(f);
                bankgrille.addChild(tBank); 

            }

            else 
            {
                bankstock[j][i] = []                                
            }

        }
    }
}
colorBank();
addChild(bankgrille);

draggable();
function draggable()
{
    for each(var t:TBank in bankList)
    {
t.addEventListener(MouseEvent.MOUSE_DOWN, clik);
t.addEventListener(MouseEvent.MOUSE_UP, lache);
var posX=t.x;
  if (t.x != posX)
  {
      t.x = posX;
  }
function clik(e:MouseEvent):void
{
  e.currentTarget.startDrag();
}

function lache(e:MouseEvent):void
{
  e.currentTarget.stopDrag();  
}
}
}
于 2013-02-14T20:08:28.393 回答