Цитата:
Сообщение от caseyryan
Нет. Этого делать не нужно вообще. Все просто замрет в том состоянии, в котором было на момент остановки.
|
Ну, это не проблема, я покажу скрин со счетом, а после выставлю все объекты на исходные позиции
Спасибо, интересные варианты
Как раз думал о удалении, но засада получалась с заново созданной шайбой (ошибка)

Код AS3:
// создание шайбы
protected function createWasher():void
{
washerBodyDef = new b2BodyDef();
washerBodyDef.userData="washer";
washerBodyDef.type = b2Body.b2_dynamicBody;
washerShape = new b2CircleShape(30 / physicsModel.pixelsPerMeter);
//var circShape:b2CircleShape = new b2CircleShape(3);
washerFixtureDef = new b2FixtureDef();
washerFixtureDef.shape = washerShape;
washerFixtureDef.density = .1;
washerFixtureDef.friction = .1;
washerFixtureDef.restitution = .6;
washerBodyDef.position.Set(PhysicsHelper.stage.stageWidth/2 / physicsModel.pixelsPerMeter, PhysicsHelper.stage.stageHeight/2 / physicsModel.pixelsPerMeter);
washerBody = world.CreateBody(washerBodyDef);
washerBody.CreateFixture(washerFixtureDef); // строка 208
}
// удаление шайбы
protected function removeWasher():void
{
bodyesToRemove.push(washerBody);
if(pm.mouseJoint)
{
pm.mouseJoint.SetTarget(null);
world.DestroyJoint(pm.mouseJoint);
pm.mouseJoint = null;
}
}
// --- ГОЛ !!!
[EventHandler(event="PhysicsContactEvent.CONTACT_BEGIN",properties="data")]
public function contactBeginHandler(data:String):void
{
switch(data)
{
case "opponentGoal":
trace("ГОЛ ОППОНЕНТУ - нужно удалить шайбу и заново создать");
removeWasher();
createWasher();
break;
case "userGoal":
trace("USER GOAL");
break;
}
}
// обновление мира
private function enterFrameHandler(event:Event = null):void
{
if(bodyesToRemove.length>0)
{
for(i=0;i<bodyesToRemove.length;i++)
{
world.DestroyBody(bodyesToRemove[i]);
}
for(i=0;i<bodyesToRemove.length;i++)
{
bodyesToRemove.pop();
}
}
updateMouseJoint();
world.Step(physicsModel.timestep, physicsModel.velocityIterations, physicsModel.positionIterations);
world.ClearForces();
world.DrawDebugData();
updateAssetsPositions();
}
Вот такая ошибка вылетает

Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at swiz.controllers::PhysicsController/createWasher()[D:\flex 4.6\AeroHockey_2\src\swiz\controllers\PhysicsController.as:208]
При новом создании шайбы она возникает
Возможно, после удаления (в обновлении мира) нужно остановить это самое обновление, создать шайбу и заново запустить обновление ?
Я хотел бы еще один вопрос задать как раз про хоккей.
А как Вы двигали биту, при нажатии или нет ?
Я хотел бы чтобы без нажатия бита двигалась за мышкой моментально.
Это мне просто нужно назначать

Код AS3:
pm.mouseXWorldPhys=PhysicsHelper.stage.mouseX/physicsModel.pixelsPerMeter;
pm.mouseYWorldPhys=PhysicsHelper.stage.mouseY/physicsModel.pixelsPerMeter;
var mousePVec:b2Vec2=new b2Vec2(pm.mouseXWorldPhys,pm.mouseYWorldPhys);
userStickBody.SetPosition(mousePVec);
?
или все-таки с джоинтами нужно это делать ?
..............
вот как заработало:
в обновлении мира если есть объекты для уничтожения я удяляю их, останавливаю обновление мира, создаю шайбу и стартую обновление мира