0

Flash cs6 (Actionscript 3.0) でジグソー パズルを作成しようとしています。コードは次のとおりです。

import flash.events.Event;
import flash.events.MouseEvent;

addEventListener(Event.ENTER_FRAME,onenter);
stop();

function pickupObject(event:MouseEvent):void
{
    event.target.startDrag(true);
}
function dropObject(event:MouseEvent):void
{
    event.target.stopDrag();
}
function dropTarg(event:MouseEvent):void
{
    event.target.stopDrag(x,y);
}

function onenter(event:Event)
{

    var pieces = [p1,p2,p3,p4,p5,p6];
    var targets = [target1,target2,target3,target4,target5,target6]
    var targ = [p1.targ1,p2.targ2,p3.targ3,p4.targ4,p5.targ5,p6.targ6]
    var xcoord = [241.00,374.40,529.85]
    var ycoord = [224.65,224.65,224.65]

    for each (var i in pieces)
    {
        i.buttonMode = true;
        i.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
        i.addEventListener(MouseEvent.MOUSE_UP, dropObject);
            if (targets[i].hitTestObject(i.targ[i]))
            {

            //i.removeEventListener(MouseEvent.MOUSE_UP,dropObject);
            i.x = xcoord[i];
            i.y = ycoord[i];
            //i.addEventListener(MouseEvent.MOUSE_UP,dropObject);
            }
}
}

私が達成しようとしているのは、基本的に、ユーザーが p1 と言う (このオブジェクトにはレイヤー内に別の targ がある) をクリックし、その targ が対応するターゲットにヒットすると、オブジェクトは x、y 座標でスナップします。

私が得ているエラーは TypeError: Error #1010: A term is undefined and has no properties です。JigSawWithArrays_fla::MainTimeline/onenter() で

これにより、配列を正しく参照/アクセスしていないと思います。

これは実行可能ですか?私は Flash cs6 の初心者であり、これに関するガイダンスをいただければ幸いです。

前もって感謝します。

4

1 に答える 1

0

for each の代わりに for を試してください

for, for each difference

for (var i:int = 0; i < pieces.length; i++) {

   var piece:MovieClip = pieces[i] as MovieClip;
   piece.buttonMode = true;
   piece.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
   piece.addEventListener(MouseEvent.MOUSE_UP, dropObject);

   if (targets[i].hitTestObject(targ[i]))
   {
        piece.x = xcoord[i];
        piece.y = ycoord[i];
   }
}
于 2013-08-07T05:56:38.350 に答える