所以基本上我试图制作一个横幅,用一个按钮在ROLL_OVER和ROLL_OUT上添加和删除一个影片剪辑。我创建了影片剪辑和按钮,如果我只使用ROLL_OVER,它可以正常工作。一旦我为ROLL_OUT添加了一个eventListener,它就像疯了一样循环这些函数,并且影片剪辑会一直闪烁。我知道我错过了一些简单的事情,但我无法理解什么。这是代码:
var MySmiles:smilesEvery=new smilesEvery();
buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OVER, smiles, false, 0, true);
function smiles(myevent:MouseEvent):void {
this.addChild(MySmiles);
};
buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OUT, smilesOUT, false, 0, true);
function smilesOUT(myevent:MouseEvent):void {
this.removeChild(MySmiles);
};
有什么想法吗?
答案 0 :(得分:0)
删除侦听器可能有所帮助:
var MySmiles:smilesEvery = new smilesEvery();
buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OVER, smiles, false, 0, true);
buttonSmiles_btn.mouseChildren = false //to be shure, that one of the childs interfire with mouse events
function smiles(myevent:MouseEvent):void {
this.addChild(MySmiles);
buttonSmiles_btn.addEventListener(MouseEvent.ROLL_OUT, smilesOUT, false, 0, true);
};
function smilesOUT(myevent:MouseEvent):void {
buttonSmiles_btn.removeEventListener(MouseEvent.ROLL_OUT, smilesOUT, false,0,true);
this.removeChild(MySmiles);
};
答案 1 :(得分:0)
我的猜测:滚动时你会显示一个与你的按钮重叠的剪辑。 因此,您可以立即按下按钮。 这反过来会导致您的按钮再次接收翻滚。 这会导致递归堆栈溢出。 :)
如果上述情况属实,只需在MySmiles上禁用鼠标即可。 mouseChidren和mouseEnabled。