在movieclip鼠标点击上防止下一个场景帧

时间:2013-04-29 17:13:02

标签: actionscript-3 flash flash-cs5.5

我有一个带有几个对象的场景作为动画片段,可以一次点击一个。 会发生的是我能够点击每个对象,然后单击场景切换到下一帧。

如何更改?

基本上我有一把钥匙和一扇门,两个都是动画片夹。 您可以收集钥匙,它会消失,之后您可以点击门打开它。 实际发生的是你们都能够点击钥匙和门。 当您单击该键时,它按预期工作,但是当您单击门时,该键仍然会消失。对于超过2个对象,这会更烦人。

密钥的代码:

addEventListener(MouseEvent.CLICK, CollectKey);

function CollectKey(event: MouseEvent): void
{
    this.visible = false;
    // door
    MovieClip(root).door.addEventListener(MouseEvent.CLICK, MovieClip(root).FinishGame);
}

门的代码:

stop();

function FinishGame(event: MouseEvent): void
{
    if(MovieClip(root).currentFrame == 4)
    {
        nextFrame();
    }
}

http://www.wuala.com/sollniss/stuff/Untitled-2.swf/
http://www.wuala.com/sollniss/stuff/Untitled-2.fla/

2 个答案:

答案 0 :(得分:0)

修改

在查看你的.fla后,我可以看到你的问题:

在第一帧中,您有以下脚本:

stop();

addEventListener(MouseEvent.CLICK, StartGame);

function StartGame(event: MouseEvent): void
{
    nextFrame();
}

你可能不知道你在那里添加的鼠标点击监听器,在你告诉它之前不会消失(即使帧发生了变化)。这就是为什么每次点击都会调用下一帧。

要解决此问题,只需删除收听,然后再转到下一帧:

function StartGame(event: MouseEvent): void
{
    removeEventListener(MouseEvent.CLICK, StartGame);
    nextFrame();
}

答案 1 :(得分:0)

并且,可能只有可见的false是不够的,你还需要为key元素设置enabled = false和mouseEnabled = false,因为没有它,它将继续听到click事件。