stage->addActor(actor); 添加
stage->getRoot()->removeActor(actor); 移除
先进行标记,然后在渲染线程中进行移除动作。
body的添加与移除
先标记,再在渲染函数中去执行移除动作。从实际的代码来看,只能销毁,不能移除(这个要再详细研究下)
实例代码:
public void renderSprite() {
// m_world.getBodies(m_bodyArray);
if (m_removed) {
// m_bodyArray.removeValue(m_body, false); // 不能实现移除刚体的目标
m_body.setUserData(null);
m_world.destroyBody(m_body);//实现移除刚体的目标
m_stage.getRoot().removeActor(m_image);// 实现移除actor
} else {
// m_bodyArray.add(m_body);
}
接触监听的地方要特别注意:
private void judgeTurboAndNumBall(Contact contact, int step)
{
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
if (null == fixtureA || null == fixtureB) {
return;
}
Body bodyA = fixtureA.getBody();
Body bodyB = fixtureB.getBody();
if (null == bodyA || null == bodyB) {
return;
}