完成Flash的拖放测验时出错

时间:2015-09-26 07:39:27

标签: actionscript-3 drag-and-drop

我正在尝试在flash上​​创建一个拖放游戏。但我最终得到一个错误,#error1083的语法错误,否则是意外的。 错误显示在第42行,我不知道我应该错误哪一行。

有人能告诉我代码有什么问题吗?

以下是代码

    import flash.events.MouseEvent; 
    var objectoriginalX:Number;
    var objectoriginalY:Number;

    blue.buttonMode = true;
    blue.addEventListener(MouseEvent.MOUSE_DOWN, pickObject);
    blue.addEventListener(MouseEvent.MOUSE_UP, dropObject);




    green.buttonMode = true;
    green.addEventListener(MouseEvent.MOUSE_DOWN, pickObject);
    green.addEventListener(MouseEvent.MOUSE_UP, dropObject);


    red.buttonMode = true;
    red.addEventListener(MouseEvent.MOUSE_DOWN, pickObject);
    red.addEventListener(MouseEvent.MOUSE_UP, dropObject);

    function pickupObject(event:MouseEvent):void
    {
        event.target.startDrag();
        event.target.parent.addChild(event.target);
        objectOriginalX = event.target.x;
        objectOriginalY = event.target.y;
    }

function dropObject (event:MouseEvent):void
{
    event.target.stopDrag();
    var matchingTargetName:String = event.target.name + "target" ;
    var matchingTarget: DisplayObject = getChildByName(matchingTargetName);

    if(event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget);

{
    event.target.removeEventListener(MouseEvent.MOUSE_DOWN,pickupObject);
    event.target.removeEventListener(MouseEvent.MOUSE_UP,dropObject);
    event.target.buttonMode = false;
    event.target.x = matchingTarget.x;
    event.target.y = matchingTarget.y;
}



    else { // here is where i got error 1083
            event.target.x = objectOriginalX;
            event.target.y = objectOriginalY;
        }
    }

2 个答案:

答案 0 :(得分:0)

删除该行末尾的;

if(event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget);

答案 1 :(得分:0)

关于objectOriginalX和朋友,问题是你没有初始化变量。与初始化为int的{​​{1}}不同,0变量不会初始化为实际值,而是Number(非数字)。您必须在计算中使用它们之前设置这些值,如...

NaN

...或先将它们设置为起点。此外,您可能正在尝试在初始化之前添加pickObject。 var objectoriginalX:Number = 0; var objectoriginalY:Number = 0; 初始化为Object,因此您需要在使用之前将pickObject指定给某些内容。例如,在这一行......

null

... pickObject是否存在?它不能为空;必须在使用之前进行分配。