flash as3.0移除侦听器问题
我用removeListener老是出错老是提示我removeListener没定义是什么原因啊...
我用removeListener 老是出错 老是提示我removeListener 没定义 是什么原因啊
展开
4个回答
展开全部
从专业角度来说,用flash as 开发东西,基本上不用场景(可能动画短片制作时会方便一引起)。因为所谓场景其实就是把一个时间轴上的东西拆开分成几段而矣,因此你场景1里的代码当然会在场景2的时候依然运行。
你写的代码不专业,建议使用修改如下的代码:
var startArray:Array = new Array;
stage.addEventListener(Event.ENTER_FRAME, csXX1);
function csXX1(e:Event):void {
var XX1 = new XX ;
////////////////////////////////////////////////////////////////
startArray.push(XX1);
////////////////////////////////////////////////////////////////
XX1.scaleX = XX1.scaleY = 0.2;
XX1.x = 550 * Math.random();
XX1.y = 440 * Math.random();
stage.addChild(XX1);
XX1.addEventListener(Event.ENTER_FRAME, ycXX1);
}
function ycXX1(e:Event):void {
var mc = e.target as MovieClip;
if (stage.numChildren > 50) {
mc.removeEventListener(Event.ENTER_FRAME, ycXX1);
stage.removeChild(mc);
}
}
我加了一句 代码
////////////////////////////////////////////////////////////////
var startArray:Array = new Array;
startArray.push(XX1);
////////////////////////////////////////////////////////////////
目的是将你所产生的星星都用数组管理。以便以后处理。
然后,如果想将场景1的代码移除的办法,就是在场景2的第一帧加一段删除代码即可,如下:
stage.removeEventListener(Event.ENTER_FRAME, csXX1);//目的是不再让星星产生。
for(var i:int = 0; i < startArray.length; i++) {
startArray[i].removeEventListener(Event.ENTER_FRAME, ycXX1);//目的是将之前所产生的星星的时时运行的侦听器也删除。
stage.removeChild(startArray[i]);
}
这样就可以了,在场景2第一帧加上这么一段程序,就可以删除前面产生的东西了。
如果有相关flash as3的问题的话,可以关注一下
里面有展示与案例源文件下载。
网站还在成长,相信能给你一定的帮助
你写的代码不专业,建议使用修改如下的代码:
var startArray:Array = new Array;
stage.addEventListener(Event.ENTER_FRAME, csXX1);
function csXX1(e:Event):void {
var XX1 = new XX ;
////////////////////////////////////////////////////////////////
startArray.push(XX1);
////////////////////////////////////////////////////////////////
XX1.scaleX = XX1.scaleY = 0.2;
XX1.x = 550 * Math.random();
XX1.y = 440 * Math.random();
stage.addChild(XX1);
XX1.addEventListener(Event.ENTER_FRAME, ycXX1);
}
function ycXX1(e:Event):void {
var mc = e.target as MovieClip;
if (stage.numChildren > 50) {
mc.removeEventListener(Event.ENTER_FRAME, ycXX1);
stage.removeChild(mc);
}
}
我加了一句 代码
////////////////////////////////////////////////////////////////
var startArray:Array = new Array;
startArray.push(XX1);
////////////////////////////////////////////////////////////////
目的是将你所产生的星星都用数组管理。以便以后处理。
然后,如果想将场景1的代码移除的办法,就是在场景2的第一帧加一段删除代码即可,如下:
stage.removeEventListener(Event.ENTER_FRAME, csXX1);//目的是不再让星星产生。
for(var i:int = 0; i < startArray.length; i++) {
startArray[i].removeEventListener(Event.ENTER_FRAME, ycXX1);//目的是将之前所产生的星星的时时运行的侦听器也删除。
stage.removeChild(startArray[i]);
}
这样就可以了,在场景2第一帧加上这么一段程序,就可以删除前面产生的东西了。
如果有相关flash as3的问题的话,可以关注一下
里面有展示与案例源文件下载。
网站还在成长,相信能给你一定的帮助
展开全部
好像应该是 removeEventListener 你写的是不是少中间的"Event"啊?
对象.removeEventListener (事件,处理过程)
例:
mc. addEventListner(MOUSEEVENT_CLICK, onClick);
..........
mc.removeEventListner(MOUSEEVENT_CLICK, onClick)
也就是说,添加的时候如何写的参数,移除的时候参数完全写成一样
对象.removeEventListener (事件,处理过程)
例:
mc. addEventListner(MOUSEEVENT_CLICK, onClick);
..........
mc.removeEventListner(MOUSEEVENT_CLICK, onClick)
也就是说,添加的时候如何写的参数,移除的时候参数完全写成一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
removeEventListener
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实例.removeEventListener(事件类型,方法)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询