我想删除使用计时器在循环中创建的对象。
var timer:Timer = new Timer(2000);
timer.addEventListener(TimerEvent.TIMER, voegtoe);
在函数voegtoe中我添加了一个名为man的Movieclip对象:
man.x=Math.random()*650;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);
我想在2秒后删除此对象。问题是有多个“人”对象。
有人可以帮帮我吗?
感谢。
答案 0 :(得分:1)
将Movieclip对象保存在数组中会使以后更容易引用。
var man:Array = new Array();
for (var i:int=0; i<10;i++)
{
man[i] = new Movieclip();
man[i].x=Math.random()*650;
man[i].y=Math.floor(Math.random()*(70))+350;
addChild(man[i]);
}
现在您可以参考您的mc所在的阵列位置:
function removeMC(id:int):void
{
removeChild(man[id])
}
答案 1 :(得分:0)
您在寻找setTimeout功能吗?
man.x=Math.random()*650;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);
将计时器设置为:
setTimeout(removeMan, 1000);
将被调用的函数定义为:
function removeMan():void
{
removeChild(man)
}
它可能更容易,但即使是liveocs建议使用Timer对象(如在nelsond的回答中)。
答案 2 :(得分:0)
这可以通过几种不同的方式完成。
我的建议是你为男人准备了一堂课。在这个类中,你有一个启动removeTimer的函数,并且应该在创建man时触发。当2秒钟结束时,我们删除事件Listener并将其从父母身上删除。
添加男人的计时器应该是你想要实例化你男人的任何课程。
这是一个例子
public function initMyTimer()
{
var timer:Timer = new Timer(2000);
timer.addEventListener(TimerEvent.TIMER, voegtoe);
timer.start();
}
public function voegtoe(e:TimerEvent):void
{
trace ('set me up');
var man:Man = new Man;
man.x=Math.random()*650;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);
man.setMyRemoveTimer();
}
现在你的Man类应该有这些函数来处理删除。请注意,我们在上面的代码中调用了setMyRemoveTimer。你可以在构造函数中调用该函数,但我想在这里显示链接,所以我把它放在上面的代码中。该函数将存在于Man类中:
public function setMyRemoveTimer():void
{
var removeTimer:Timer = new Timer(2000,1);
removeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeMe);
removeTimer.start();
}
public function removeMe(e:TimerEvent):void
{
var removeTimer:Timer = e.target as Timer;
removeTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeMe);
this.parent.removeChild(this);
}
这只是一个建议,很多方法都可以做到这一点。如果你创造了很多男人,我认为拿着这些男人的阵列的想法是一个很好的建议。
但是这里的概念是,如果计时器是Man类的成员,则eventHandler将有权从其父级中移除侦听器以及man。
我不认为这是一个理想的实现,但我试图尽可能地匹配你当前的设计 - 我不想进入数组来教这个概念。
答案 3 :(得分:0)
引用许多男性的一种简单方法是使用name属性并调用每个man.name="man"+i;
然后使用getChildByName("man"+5)
检索您想要的任何动画片段。