In meiner Spielszene spawne ich Bälle aus einer Ballklasse, die sich zufällig mit der MoveBy-Aktion bewegen. Meine Frage ist, wie gebe ich Ball frei, nachdem die MoveTo-Aktion beendet ist? Sehen Sie meinen Code unten:Neues Objekt nach Aktion freigeben
//GameScene class
...
Ball *ball = new Ball(); //<----need to release this after action is over
ball->spawnBall(this);
...
//Ball class
...
void Ball::spawnBall(cocos2d::Layer *layer){
ball = Sprite::create();
layer->addChild(ball);
auto action = Sequence::create(MoveBy::create(...)), RemoveSelf::create(), null);
ball->runAction(action);
}
mag ich die Kontrolle über seinen Speicher (Heap) haben, weil ich mit einer automatischen Freigabe (Stack) gefunden:
Ball ball;
ball.spawnBall(this);
Einige der Kugeln würden zufällig stoppen. Ich denke, sie überschreiben ihre Erinnerungen, wenn sie erzeugt werden.
Dank
Wissen Sie, wenn Sie erstellen e es über 'create' Methode sollte es automatisch freigeben (über 'Autorelease'), wenn Sie 'Release' aufrufen, nachdem Sie fertig sind, es zu verwenden (weil Retain-Count auf 0 geht)? – PnotNP
Ja, ich weiß, dass die Methode create() automatisch freigegeben wird. Aber ich bin mir nicht sicher, ob das mein Problem löst. Können Sie ein Beispiel geben? Danke – ctapp1