当我编译我的英雄并没有触摸地板但是反正停在上面的几个像素。我想如果我跟踪了两个身体和他们各自的精灵,我就知道哪些不是一致的。
trace("Hero: ", hero.position.y, "/", heroSprite.y);
trace("Floor: ", floor.position.y, "/", floorSprite.y);
我得到以下内容,
英雄:470.2(...)/ 470.2
楼层:0/0
此外,在以下情况下,y属性中的楼层位置0如何:
createWall(stage.stageWidth/2, 500, 100, 30); //(y = 500)
我读到了颈背身体的注册点'在中间,精灵一个位于左上角,所以当给精灵提供与身体相同的x和y时,它不会匹配。精灵下面的位置不合适。
public function createWall(x:Number, y:Number, width:Number, height:Number):void
{
wall.shapes.add(new Polygon(Polygon.rect(x, y, width, height)));
wall.space = space;
wallSprite.graphics.beginFill(0x000000);
wallSprite.graphics.drawRect(x, y, width, height);
wallSprite.graphics.endFill;
addChild(wallSprite);
wall.userData.sprite = (wallSprite);
addChild(wall.userData.sprite);
}
我尝试了wallSprite.graphics.drawRect(-width/2, -height/2, width, height);
,但没有成功。虽然我相信问题就在那里,正确放置精灵。
答案 0 :(得分:1)
绘图不会影响对象的位置。在你的情况下,墙是0,0你在x:stage.stageWidth / 2,y:500绘制,但不会成为墙坐标,无论如何它们仍然是0,0。