да но тебе дебагер пишет что у тебя есть физические тела без юзердаты и он не понимает че ты от него хочешь... сделай тогда проверку

Код AS1/AS2:
for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next) {
if(bb.m_userData != null) {Game.gameLink.removeChild(bb.m_userData as Sprite) };
m_world.DestroyBody(bb);
}
Добавлено через 6 минут
как делаю я:
есть класс уровень, и есть спрайт уровня(в него засовывается фон уровня и текстуры всех тел которые есть в уровне, когда персонаж бежит по уровню этот спрайт двигается в противоположную сторону и получается что камера следит за ним)... вот так выглядит мой деструктор уровня:

Код AS1/AS2:
public function destruct():void{
removeEventListener(Event.ENTER_FRAME, update);
for (var bj:b2Joint = LevelVars.world.GetJointList(); bj; bj = bj.GetNext()) {
LevelVars.world.DestroyJoint(bj);
}
for (var bb:b2Body = LevelVars.world.GetBodyList(); bb; bb = bb.GetNext()) {
LevelVars.world.DestroyBody(bb);
}
for (var i:int = LevelVars.sprite.numChildren - 1; i >= 0; i--){ // этот спрайт является родительским для всех графических изображений элементов уровня и персонажей
LevelVars.sprite.removeChildAt(i);
}
for (i = this.numChildren - 1; i >= 0; i--){
this.removeChildAt(i);
}
}
Добавлено через 7 минут
там еще где спрайты стираю должно быть битмэпдата.диспос() и затирание ссылок