Я создаю тело на кнопку мыши с этим довольно стандартным образом box2dweb:В box2dweb как уничтожить созданный орган
*stage.onMouseDown = function(){
var fixDef = new box2d.b2FixtureDef;
fixDef.density = 1;
fixDef.friction = 0.5;
fixDef.restitution = 0.7;
var bodyDef = new box2d.b2BodyDef();
bodyDef.type = box2d.b2Body.b2_dynamicBody;
bodyDef.position.x = mouseX /scale;
bodyDef.position.y = mouseY /scale;
fixDef.shape = new box2d.b2CircleShape(Math.random()*100/scale);
world.CreateBody(bodyDef).CreateFixture(fixDef);}
Я действительно не знаю, как вставить имя или идентификатор для моих созданных органов (в конце концов я могу добавить var num++
при каждом создании). Кроме того, я не знаю, как вернуть свое тело через id и вызвать метод .DestroyBody для его удаления.
Я на ранних стадиях с JavaScript и Objective C, так методы и документы, сделанные для Actionscript сделать меня с ума ..
Заранее спасибо.
обновление Вопроса:
Я нашел способ, чтобы получить обратно уже созданный объект, найти тот, я хочу среди всех из них, используя этот путь:
Примечание: myBody глобален
myBody['enter'+prodNum] = bodyDef;
bodyDef.userData = prodNum;
myBody['enter'+prodNum].id = bodyDef.userData;
prodNum - это глобальный var, который имеет «++» в каждом цикле. С этим я могу вспомнить свое тело назад, используя имя дерева var и свойство bodyDef.userData.
со следующей функцией, вызываемой в моей init(), которая выполняется через window.onload, я могу, как показывает console.log, изменить то, что хочу от моего извлеченного тела, однако никаких изменений не применяется к телу в холсте , даже если его свойство в журнале было изменено, я не могу заметить никаких изменений на экране.
function reduceObj(){
var itsMe;
itsMe = myBody.enter10;
var newPosX = itsMe.position.x;
itsMe.active = false;
itsMe.awake = true;
itsMe.linearVelocity.x = 2000;
itsMe.position.x = newPosX+500;
itsMe.fixedRotation=true;
itsMe.allowSleep=true;
console.log(myBody.enter10,itsMe,itsMe.id,'it s me');
}
не удается получить, почему все это происходит .. плюс я уже установлен ступенчатую функцию(), который должен обновить мой мир каждый х миллисекунды ... Помогите пожалуйста
Я мог бы добиться успеха в своем намерении делать: Var myBody = world.CreateBody (bodyDef) .CreateFixture (FixDef) , но я не совсем уверен, что это лучший способ; var mybody = CreateBody (bodyDef) только, не инициализирует объект, и я не смог его напомнить как: world.myBody. В любом случае, этот способ работает, и теперь я думаю, что я буду лучше понимать, как работает эта система, спасибо большое – user3190749
Но CreateFixture возвращает прибор ... вам нужно сделать CreateBody и сохранить результат этого. Затем вы можете сделать CreateFixture позже. Я добавил строку в ответе выше. – iforce2d
большое спасибо, он отлично работает XD – user3190749