Физика затылка, прикрепляющая клип к нескольким телам затылка. Неявная ошибка принуждения
Я пытаюсь прикрепить клип к нескольким телам, но получаю следующую ошибку.
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;