0

おはようございます。カラフルなグリッドを gotoAndStop(その番号 ( ))で表示するために Array の値を取るbankgridによって生成されたグリッド ( ) があります。すべての正方形は同じ MovieClip( ) からの子であり、Array 内の水平方向 ( ) および垂直方向 ( ) の位置で1 つずつ生成されます。私は正方形をドラッグ可能にしようとしています...無駄に:var bankArray:ArrayfTBankij

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);

私の将来のプロジェクト(おそらく私の質問をより意味のあるものにするため):「その後、そこに正方形をドラッグして別の配列にドロップして、2番目の色を変更できるようにしたい」

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 に答える