Физика затылка, прикрепляющая клип к нескольким телам затылка. Неявная ошибка принуждения

Я пытаюсь прикрепить клип к нескольким телам, но получаю следующую ошибку.

Line 118    1067: 
Implicit coercion of a value of type flash.display:MovieClip 
to an unrelated type nape.shape:Shape.

и вот блок кода:

for (var i:int = 0; i < 10; i++)
{
     var brick:Body= new Body(BodyType.DYNAMIC);
     var brickShape:Polygon = new Polygon(Polygon.box(10,30));
     brick.position.setxy(500, ((h ) - 32 * (i + 0.5)));
     var brickMovieClip:MovieClip = new Brick();
     brickMovieClip.width = 10;
     brickMovieClip.height = 30;
     addChild(brickMovieClip);
     brick.shapes.add(brickMovieClip);              
     brick.space = space;
    brick.shapes.at(0).material.elasticity = .1;            
}

Если у вас есть идеи, как это исправить, ваша помощь будет принята с благодарностью.

1 ответ

Решение

Свойство shape объекта Body - это список nape.shape.Shape, а не MovieClip, вы должны добавить brickShape в список форм тела, а не Movieclip.

Сам Nape не имеет ничего общего с графикой, и каждый ваш кадр должен перемещать графический элемент, связанный с телом, в правильное положение / вращение в зависимости от состояния физического объекта.

Что вы можете сделать, это сохранить мувиклип в поле userData тела, чтобы вы могли легко получить к нему доступ позже, если необходимо, например:

body.userData.graphic = brickMovieClip;

Затем каждый кадр вы можете обновить графику, как:

var mc:MovieClip = body.userData.graphic;
mc.x = body.position.x;
mc.y = body.position.y;
mc.rotation = body.rotation * 180 / Math.PI;
Другие вопросы по тегам