我做了一个 Flash 游戏,你驾驶飞机,你必须抓住圆圈,避免降落伞之类的东西。这是游戏的屏幕,您可以了解我在说什么:
我遇到的问题是内存使用情况,因为我想用空气将它迁移到 iphone。当我在菜单中没有问题时,应用程序使用大约 40 mb。但是当我玩的时候,记忆像箭头一样上升。我拍摄了 Monster Debugger 图形的屏幕。这里是:
问题是我对从天上掉下来的每个元素都有不同的类。降落伞,冲浪者,圆圈线和奖金。它们都非常相似,所以我将只复制降落伞类:
package {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.*;
import ascb.util.NumberUtilities;
import myGlobal;
import flash.geom.*;
import com.demonsters.debugger.MonsterDebugger;
public class paracaidistasClass extends MovieClip {
private var n:Number = 0;
private var _rotacionDelAvion:int = 1;
private var temporizador:Timer=new Timer(myGlobal.paracaidistasTemporizador[myGlobal.nivel - 1],0);
public function paracaidistasClass() {
// constructor code
temporizador.start();
temporizador.addEventListener(TimerEvent.TIMER, emisor);
addEventListener(Event.ENTER_FRAME, altura);
}
private function altura(e:Event):void{
if (myGlobal.detener == false){
this.y = this.y - myGlobal.altura;
}
}
private function emisor(e:TimerEvent){
if (myGlobal.detener == false){
temporizador.delay = NumberUtilities.random(myGlobal.paracaidistasMinimoDelay[myGlobal.nivel - 1], myGlobal.paracaidistasMaximoDelay[myGlobal.nivel - 1]);
var paracaidista = new paracaidistaClass;
this.addChildAt(paracaidista, 0);
paracaidista.y = NumberUtilities.random(-350,50);
myGlobal.cantidadDeParacaidistas = this.numChildren;
addEventListener(Event.ENTER_FRAME, movimiento);
}
}
private function movimiento(event:Event):void{
if (myGlobal.detener == false){
for (var i:Number=0; i<this.numChildren;i++){
getChildAt(i).x = getChildAt(i).x - (myGlobal.velocidad - (pasarAPositivo(myGlobal.rotationDelAvion) / 12));
getChildAt(i).x = getChildAt(i).x - 1;
if (getChildAt(i).localToGlobal(new Point(stage.x,0)).x < -200){
removeChildAt(i);
myGlobal.cantidadDeParacaidistas = this.numChildren;
}
}
}
//delete all parachutes
if (myGlobal.reiniciar == true){
for (var d:Number=0; d<this.numChildren;d++){
removeChildAt(d);
myGlobal.cantidadDeParacaidistas = this.numChildren;
}
}
}
private function pasarAPositivo(value:int):int{
var _rotacionPositiva:int;
_rotacionPositiva = value;
if (_rotacionPositiva < 0){
_rotacionPositiva = _rotacionPositiva * -1;
}
return _rotacionPositiva;
}
}
}
好。屁股你可以看到我删除了不在舞台上或被击中的降落伞,所以内存使用应该在某个点稳定下来。我也检查过,我从来没有通过降落伞的 3、4 个孩子。所以,我不明白为什么只有当你删除整个级别末尾的整个班级时,内存才会下降,为什么当你删除我不使用的孩子时它不稳定并继续增长。我希望你足够清楚,有人知道问题所在。提前致谢。