【问题标题】:as3 cs5 Odd Error #1009 in drag and drop game拖放游戏中的 as3 cs5 奇数错误 #1009
【发布时间】:2012-05-29 08:04:42
【问题描述】:

我正在制作一个拖放游戏。 在 MouseEvent.MOUSE_UP 我有一个这样的 if 语句:

function fnUp(event:MouseEvent):void
    {
        clicked.stopDrag();
        if (clicked.dropTarget.parent.parent.name == clicked.currentLabel)
        {
            var dropped:Card = clicked.dropTarget.parent.parent as Card;
            dropped.gotoAndStop(dropped.name);
            dropped.bg.gotoAndStop("done");
            removeChild(clicked);

        }
        else
        {
            clicked.x = clicked.sx;
            clicked.y = clicked.sy;
            clicked.bg.gotoAndStop("off");
        }
        clicked = null;
    }

"clicked" 是较早声明的 Card() 类型的 var;它在 MouseEvent.MOUSE_DOWN 中设置如下:

    function fnDown(event:MouseEvent):void
    {
        clicked = event.currentTarget as Card;
        clicked.bg.gotoAndStop("on");
        clicked.startDrag();
        addChild(clicked);
    }

我认为如果我像这样构建我的 if 语句,那么如果卡被丢弃在除了三个可能的目标卡之一之外的任何地方都不会出错。但我仍然得到:

TypeError:错误 #1009:无法访问空对象引用的属性或方法。

tldr;如果我将卡放在 3 个可能目标之一之外,我会收到错误消息。

【问题讨论】:

    标签: actionscript-3 drag-and-drop flash-cs5


    【解决方案1】:

    您在哪一行出现错误?您需要检查是否存在以下所有对象:

    if (clicked.dropTarget &&
    clicked.dropTarget.parent &&
    clicked.dropTarget.parent.parent )
    {
        then do something...
    }
    

    【讨论】:

    • 我拖动的剪辑只有在条件适用时才需要做一些事情我放在 if 语句中: clicked.dropTarget.parent.parent.name == clicked.currentLabel 。我得到的错误只有当我将它放在舞台上三个可能的放置目标之一之外时才会得到,只有在那里它不应该能够做出反应,因为它应该属于 if 语句的 else 部分(我说得有道理吗?)
    • 您需要检查所有变量是否存在,因为如果由于某些原因clicked.dropTargetnull,那么您将无法获得clicked.dropTarget.parent,这将导致 1009 错误。
    • 正如我试图解释的那样,if 语句适用于 droptargets。只是,当我将“点击”放在舞台上的 droptargets 之外时,我会收到 1009 错误。
    • 此时您拥有的计算对象之一是null。只需从出现错误的行中跟踪所有对象。
    • 我想我开始明白你想告诉我什么了 :) 我会追查这一切,当我弄清楚时再回到这个问题。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多