Re[4]: как ужиться со сборщиком мусора Lua ?
От: Troglodit  
Дата: 06.10.08 09:34
Оценка:
Здравствуйте, 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))
            );



Да, действидельно, когда убрал адопт удалять перестало. Спасибо !
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.