我有一个由代码带到舞台上的MovieClip实例(电影)。我想添加一些效果,当鼠标悬停或鼠标按下这部电影。因此,首先我将事件侦听器添加到此MovieClip中:
movie.addEventListener(MouseEvent.MOUSE_DOWN, movieDownHandler);
movie.addEventListener(MouseEvent.MOUSE_UP, movieUpHandler);
movie.addEventListener(MouseEvent.MOUSE_OVER, movieOverHandler);
movie.addEventListener(MouseEvent.MOUSE_OUT, movieOutHandler);然后我添加了事件处理程序:
private function movieDownHandler(e:MouseEvent):void {
trace("down");
}
private function movieUpHandler(e:MouseEvent):void {
trace("up");
}
private function movieOverHandler(e:MouseEvent):void {
trace("over");
}
private function movieOutHandler(e:MouseEvent):void {
trace("out");
}当我测试它时,一切都正常:鼠标经过这部电影,轨迹经过,鼠标按下轨迹向下,鼠标向上轨迹,等等。但是,当我将大小更改添加到电影中时,例如,鼠标按下处理程序如下:
private function movieDownHandler(e:MouseEvent):void {
trace("down");
movie.scaleX = 0.9;
movie.scaleY = 0.9;
}和一些过滤效果,以过度处理,例如blurFilter:
private function movieOverHandler(e:MouseEvent):void {
trace("over");
e.currentTarget.filters = [new BlurFilter(1,1,1)];
}然后,我收到事件处理程序的意外行为:鼠标悬停在轨迹上(这没问题),然后我在电影中按下(鼠标按下但不释放鼠标按钮),然后三个事件一个接一个地发生:“向下”、“向外”、“向上”(鼠标光标不离开MovieClip形状)。有什么问题吗?此外,将scaleX和scaleY设置为1.1不会破坏处理程序的行为
发布于 2013-10-21 14:24:00
当你点击一个按钮时,它会经历三个阶段,首先是'over',然后是'down',然后是'up',所以它的轨迹是这样的。scareX取值范围为0~1,sacre为0% ~ 100%
https://stackoverflow.com/questions/19487130
复制相似问题