【问题标题】:Flash AS3 IF statementFlash AS3 IF 语句
【发布时间】:2013-03-25 20:03:58
【问题描述】:

我制作了一个 Flash 应用程序,您需要在其中匹配一个对象。所以在下面,我将对象(船,obj1,obj2,obj3)设置为目标(t1,t2,t3,t4)。然后我将分数设置为 0。

private function onAddedToStage(e:Event):void
    {
        stage.addEventListener(MouseEvent.MOUSE_UP, _check);
        removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);

        ship.setTarget(t1,shipObject);

        obj1.setTarget(t2,1Object);

        obj2.setTarget(t3,2Object);

        obj3.setTarget(t4,3Object);

        score = 0;
                    scorecounter.text =" SCORE:" + score.toString();

    }

接下来,我创建了一个函数来确定对象(在本例中为船)是否已到达目标。

function _check(event:TimerEvent):void 
    {
        if(ship.done)
           {     
              score += 1;
              scorecounter.text =" SCORE:" + score.toString();
           }

            }

这可以正常工作,因为一旦用户将船拖到目标,它会在分数上加 1,但随后会出现问题。我有不止一个对象/目标。这意味着当用户完成将飞船移动到目标时,任何其他被移动的对象都会立即给分数+1,因为对象飞船仍然在目标处。

有人知道如何解决这个问题吗?

非常感谢。

【问题讨论】:

  • 你能发布更多代码吗?您在发布的代码中没有提供足够的上下文。具体来说,这段代码何时运行以及在什么上下文中运行? (在目标对象的类文件中?)

标签: actionscript-3 flash loops


【解决方案1】:

嗯...如果没有完整的代码,有点难以捕捉到正在发生的事情,但这里有一个镜头:

我注意到你的“ship”对象有一个属性“done”,所以我猜你在对象上创建了一个名为“done”的变量/属性,这让我觉得你可以向船添加另一个属性,比如“得分”

所以你的代码可能看起来像这样:

if ((ship.done) && (ship.scored == false)){
  ship.scored = true;
  score += 1;
  scorecounter.text = "SCORE:" + score.toString();
}

这对你来说可能吗?

【讨论】:

  • 太棒了!我刚刚创建了 ship.scored,它奏效了!我给了你最好的答案。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2010-10-02
  • 1970-01-01
  • 2012-06-09
  • 2010-10-16
  • 1970-01-01
相关资源
最近更新 更多