私のゲームシーンでは、MoveByアクションでランダムに移動するボールクラスからボールを生成します。私の質問は、MoveToアクションが終了した後、どのようにボールを放つのですか?以下の私のコードを参照してください:アクション後に新しいオブジェクトを解放します
//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);
}
私は自動リリース(スタック)を使用して見つけたので、私はそれのメモリ(ヒープ)の制御を持ちたい:
Ball ball;
ball.spawnBall(this);
ボールの一部がランダムに停止します。私は彼らが生まれたときにお互いの記憶を上書きしていると思っています。私は非常に
int GameScene::func()
{
Ball ball;
ball.spawnBall(this);
return 0; //ball is automatically deleted here
}
あなたは
int GameScene::func()
{
Ball *ball = Ball::create(); //dont use new here, use create() function here and autorelease
ball.spawnBall(this);
//autorelease here
return 0;
}
ことができるようになります。
あなたが知っていますか?それを使用し終わった後に 'release'を呼び出すと(' autorelease'を介して)自動的に解放されるはずです(保持カウントが0になるので)? – PnotNP
ええ、私はcreate()メソッドが自動的に解放されることを知っています。しかし、私はこれが私の問題を解決するかどうかはわかりません。例を教えてください。ありがとう – ctapp1