我正在尝试使我的movieclip闪烁,当它被某些东西击中时会闪烁,以创建一个游戏的效果。当它被击中时有一个命中测试,捕获被调用的对象。捕获的功能对象将使其停止并开始基于计时器闪烁。我的计时器设置在新的计时器(400)上;为什么我的物体不闪烁?我的条件似乎是正确的。
if (hit.hitTestObject(f.hit))
f.caught();
private function blinkingHandler(evt:TimerEvent):void
{
_canBlink = true;
if (_canBlink)
{
this.alpha = 0;
_canBlink = false;
this.alpha = 100;
trace("blinking");
}
}
public function caught() : void
{
_blinkTimer.start();
//removeEventListener(Event.ENTER_FRAME, loop);
//this.stop();
}
答案 0 :(得分:1)
首先,我假设您已经添加了事件监听器,以便在Timer触发时触发blinkingHandler
调用:
_blinkTimer.addEventListener(TimerEvent.TIMER, blinkingHandler);
现在,你发布的blinkingHandler
永远不会隐藏对象。 alpha设置为0,但你在同一个调用中立即将其设置为1,因此最终结果是alpha不显示为0.你必须将alpha设置为0,让几帧渲染,设置它在下一个计时器滴答时返回1,依此类推。试试这个:
private function blinkingHandler(evt:TimerEvent):void
{
if(_canBlink) this.alpha = 1;
else this.alpha = 0;
_canBlink = !_canBlink;
}
你甚至可以这样做:
visible = !visible;
简单地切换每个计时器的可见性。
答案 1 :(得分:0)
var timer:Timer = new Timer(200);
var blink:Boolean = true;
timer.start();
sq_mc.addEventListener(MouseEvent.MOUSE_OVER, onMseOvrAction);
sq_mc.addEventListener(MouseEvent.MOUSE_OUT, onMseOutAction);
function onMseOvrAction(e:MouseEvent):void{
timer.addEventListener(TimerEvent.TIMER, timerAction);
}
function onMseOutAction(e:MouseEvent):void{
timer.removeEventListener(TimerEvent.TIMER, timerAction);
sq_mc.alpha = 1;
}
function timerAction(e:TimerEvent):void
{
if (!blink){
sq_mc.alpha = 1;
} else{
sq_mc.alpha = 0;
}
blink = !blink;
}
阿兰先生,我已经改变了。