我被困在這一個。我正在製作一款遊戲。我使用這段代碼來創造一些令人失望的債務。當一個物體被摧毀時,我會產生一些碎石,讓它飛過屏幕。但是......當我使用這個很多的時候,減速就在那裏,即使所有的對象都沒有了,放慢速度仍然存在。好老50fps的不會再回來了:(有沒有在這裏某種memoryleak的我失蹤?還是有更好的方式來做到這一點?使用和移除很多對象後,慢慢停留
public function destroyBlock(xPos,yPos,nrObjects) {
for (var debree = 0; debree < nrObjects; debree++) {
debreeObject = new mc_ground();
debreeObject.x = xPos;
debreeObject.y = yPos;
debreeObject.scaleX = Math.random() * 0.3 + 0.1;
debreeObject.scaleY = debreeObject.scaleX;
debreeObject.speedX = Math.random()* 5 - 2.5;
debreeObject.speedY = -Math.random() * 10 - 5;
stageObject.addChild(debreeObject);
debreeObject.addEventListener(Event.ENTER_FRAME, moveDebree);
}
}
public function moveDebree(e:Event) {
e.target.x += e.target.speedX;
e.target.y += e.target.speedY;
e.target.speedY += gravity;
if (e.target.y > stageHeight) {
e.target.removeEventListener(Event.ENTER_FRAME, moveDebree);
e.target.parent.removeChild(e.target);
}
}
您是否驗證過由該循環創建的等量對象實際通過'if(e.target.y> stageHeight){..}'? – Bakapii
是的,我嘗試了另一種方式,比如淡化對象的alpha,然後使用if(e.target.alpha == 0)來移除對象。一樣。 –
驗證此IF聲明如果(e.target.y> stageHeight)我有一種感覺,你沒有得到一個好stageHeight –