0

我是 AS3/Flash 和 stackoverflow 的新手,并试图浏览不同的线程来解决这个问题。

我的问题是,当我在其中一个按钮上滚动过快时,该按钮将滚动到“单击”状态。我有一个测试器来调试“命中!”这一行,每当发生故障时,测试器不会显示“命中”行,所以我知道它实际上并没有注册用户输入点击。

有趣的是,这个问题也只发生在我从按钮的底部或顶部垂直移动到另一侧时。更快的 FPS 似乎确实可以最大限度地减少影响,但它仍然存在。我试图摆脱我的命中区域层,认为它是问题的罪魁祸首,但即便如此它也没有做任何事情。

我会发布 .fla 以防万一有人知道这一点,我会非常感激它,因为它让我发疯了。

https://dl.dropboxusercontent.com/u/18672917/Main_Btn_7halp6.fla

这是我使用的代码,以防有人只想从可能的编码错误中找出答案。(另外,better_mc.Hit._visible = false; 似乎不起作用)

import flash.events.MouseEvent;

stop();

better_mc.addEventListener(MouseEvent.ROLL_OVER, betterOver);
better_mc.addEventListener(MouseEvent.ROLL_OUT, betterOut);
better_mc.addEventListener(MouseEvent.CLICK, betterClick);

function betterOver(evt:MouseEvent):void{
    better_mc.gotoAndPlay("Over");
    }

function betterOut(evt:MouseEvent):void{
    better_mc.gotoAndPlay(27- (better_mc.currentFrame-10));
    }   

function betterClick(event:MouseEvent):void {
better_mc.gotoAndPlay("Click");
}



better_mc.hitArea = better_mc.Hit;
better_mc.addEventListener(MouseEvent.MOUSE_DOWN, Hitbox);
function Hitbox (event:MouseEvent){
trace("hit! "+this.name);

better_mc.Hit._visible = false;
};
4

2 回答 2

0

无法打开你的 fla,因为我有 CS5,所以没有太多帮助

不知道为什么你需要 click 和 mousedown 事件,除了 gotoAndPlay(labelname) 部分之外,代码似乎很好,因为不知道如何在这里添加动画

仅用于查询的最后一部分

(另外,better_mc.Hit._visible = false; 似乎不起作用)

对于 AS3,使用属性 'visible' 而不是 '_visible',所以它将是,

better_mc.Hit.**visible** = false;
于 2013-05-09T11:24:31.470 回答
0

好的,我知道了。这就是正在发生的事情

您对推出的计算正在产生问题

function betterOut(evt:MouseEvent):void{
    **better_mc.gotoAndPlay(27- (better_mc.currentFrame-10));**
    } 

这个表达式有时会返回第 28 帧,它在第 27 帧的“stop()”之前,因此它会继续播放整个点击动画。

27- (better_mc.currentFrame-10)

尝试在单击动画开始之前添加“stop()”的简单解决方案,即在这种情况下为第 31 帧。

看看这是否解决了您的问题。

于 2013-05-10T20:28:56.410 回答