DFdou's Blog Life is short,Be yourself.

1909/080

Flash关于Mouse的onMouseDown事件

blueidea所发贴:http://bbs.blueidea.com/thread-2886519-1-1.html
问题是这样的:
有2个swf文件swf1跟swf2,swf1里边有个按钮时加载swf2的,
swf1的代码如下:

btn.onRelease=function(){
       mc.loadMovie("swf2.swf");
       }

swf2的代码是

var mouseListener:Object = new Object();
mouseListener.onMouseDown= function() {
       trace("1111111111111");
};
Mouse.addListener(mouseListener);

想要时间的效果是在swf1里加载swf2.swf后每次按下鼠标就trace 1111111111111,但是有个问题
如果多次点击(假设是N次)btn加载swf2.swf的话,swf1里边按一次鼠标会trace出来N个1111111111111;
那么,怎么解决这个问题?
根据调试发现,是因为swf1在家在swf2的时候,未清除swf2里的Object mouseListener,导致mouseListener对象越来越多,
所以swf1里点一下就出很多1111111111111。
本来跟同事也是有考虑到这个问题,不过采用了加载前unloadMovie跟removeListener,结果发现把swf1里的鼠标事件也给去掉了……
下边是网友libins提供的解决方法:

btn.onRelease = function() {
   // if (mc._height>0) {
        mc.unloadMovie("swf2.swf");
        trace(_root.mc.mouseListener);
        Mouse.removeListener(mc.mouseListener);
   // } else {
        mc.loadMovie("swf2.swf");
   //}
};

在加载swf2.swf前,先unload然后删除变量mouseListener,呵呵,原来问题出在Mouse.removeListener(mc.mouseListener);
原本我们在处理的时候没有指定mc,Mouse.removeListener(mouseListener),删除了所有的mouseListener。
虽然问题就这样解决了,但是有个很奇怪的问题。
在家在swf2.swf的时候,swf2.swf每次都会Var一个变量mouseListener,swf里允许多个名为mouseListener的变量存在?

Some Related Posts

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

:zhuang :xizao :wuwu :wenhao :wc :touxiang :shuaya :shuajian :shengtian :paopao :no :meinv :maonv :loveu :leilei :kua :jrjr :dahan :chi :chaocai :byebye


CommentLuv Enabled

No trackbacks yet.