Здравствуйте, migun, Вы писали:
M>Здравствуйте, Troglodit, Вы писали:
T>>Да, пример кода не очень удачный , я приведу другой — обойти все спрайты (созданные не в луа) и выставить им координаты (400,300)
T>>T>> StaticSpriteManager=getMgr();
T>> for v = 1, 4000, 1 do
T>> local obj= StaticSpriteManager.getStaticSprite(v);
T>> obj.setPosition(400,300);
T>> end
T>>
T>>здесь оно тоже все удаляет, хоть не оно создавало. Как поступить ?
M>А можно увидеть код биндинга на стороне C++? Как будто объекты передаются по значению, либо отдается ownership через adopt.
host.Insert(
Class<hwStaticSprite>("hwStaticSprite")
.Constructor()
.Method("setPosition", &hwStaticSprite::setPosition)
.Member("dx", &hwStaticSprite::dx)
.Member("dy", &hwStaticSprite::dy)
.Member("scale", &hwStaticSprite::scale)
.Member("rot", &hwStaticSprite::rot)
.Member("dscale", &hwStaticSprite::dscale)
.Member("drot", &hwStaticSprite::drot)
);
host.Insert( Function("getMgr", &getMgr ) );
host.Insert(
Class<hwStaticSpriteManager>("hwStaticSpriteManager")
.Method("createStaticSprite", &hwStaticSpriteManager::createStaticSprite, Adopt(-1))
.Method("getStaticSprite", &hwStaticSpriteManager::getStaticSprite, Adopt(-1))
);
Да, действидельно, когда убрал адопт удалять перестало. Спасибо !