
Код AS3:
package
{
import Box2D.Dynamics.b2World;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.KeyboardEvent;
import utils.Key;
import utils.Utils;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2Body;
/**
* ...
* @author
*/
public class Tank extends Entity
{
[Embed(source = "../assets/tank/tank1.png")] private var TANK1:Class;
public var speed:int = 10;
private var sprite:Sprite = new Sprite();
private var bitmap:Bitmap = new TANK1;
public function Tank(world:b2World, stage:Stage) {
super(world, stage);
bitmap.x = -bitmap.width / 2;
bitmap.y = -bitmap.height / 2;
sprite.addChild(bitmap);
stage.addChild(sprite);
sprite.x = 100;
sprite.y = 100;
body_def.position.Set(sprite.x / 30, sprite.y / 30);
body_def.type = b2Body.b2_dynamicBody;
body_def.userData = sprite;
body = _world.CreateBody(body_def);
body_shape.SetAsBox(sprite.width / 30 / 2, sprite.height / 30 / 2);
body_fixture.shape = body_shape;
body.CreateFixture(body_fixture);
}
override protected function update(e:Event):void {
if (input.isKey(Key.A)) body.SetAngle(body.GetAngle() - Utils.getRadian(2));
if (input.isKey(Key.D)) body.SetAngle(body.GetAngle() + Utils.getRadian(2));
if (input.isKey(Key.W)) body.SetLinearVelocity(new b2Vec2(speed * Math.sin(body.GetAngle()), -speed * Math.cos(body.GetAngle())));
if (input.isKey(Key.S)) body.SetLinearVelocity(new b2Vec2(-speed*Math.sin(body.GetAngle()), speed*Math.cos(body.GetAngle())));
}
override protected function keyUp(e:KeyboardEvent):void {
if (e.keyCode == Key.W) body.SetLinearVelocity(new b2Vec2(0.0, 0.0));
if (e.keyCode == Key.S) body.SetLinearVelocity(new b2Vec2(0.0, 0.0));
}
}
}

Код AS3:
package
{
import Box2D.Collision.Shapes.b2PolygonShape;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2Fixture;
import Box2D.Dynamics.b2FixtureDef;
import Box2D.Dynamics.b2World;
import flash.display.Stage;
import flash.events.Event;
import flash.events.KeyboardEvent;
import utils.Input;
/**
* ...
* @author
*/
public class Entity
{
protected var _world:b2World;
protected var _stage:Stage;
protected var input:Input;
public var body:b2Body;
public var body_def:b2BodyDef;
public var body_shape:b2PolygonShape;
public var body_fixture:b2FixtureDef;
public function Entity(world:b2World,stage:Stage):void {
_world = world;
_stage = stage;
input = new Input(_stage);
body_def = new b2BodyDef();
body_shape = new b2PolygonShape();
body_fixture = new b2FixtureDef();
_stage.addEventListener(Event.ENTER_FRAME, update);
_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
_stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
}
protected function update(e:Event):void {
}
protected function keyDown(e:KeyboardEvent):void {
}
protected function keyUp(e:KeyboardEvent):void {
}
}
}
почему у меня скин танка и его фигура живут отдельно?
Добавлено через 1 час 11 минут
проблема была в update головного класа