У меня проблемы с плавным движением символов для 2-й игры, которую я делаю. Похоже, что при перемещении персонаж дважды. Вроде как это (его только один пиксель, хотя):Проблемы с движением 2D-текстуры
(()
//{}\ ==>
| ||
Игра работает на твердом 60 кадров в секунду, и мой монитор не проблема (я испытал это на нескольких мониторах).
Я использую скворец в данный момент, но у меня было это с тех пор, как я впервые посмотрел на игры (используя openGL). Я надеялся, что кто-то скажет мне, что мне не хватает. Вот мой код:
private var _x:Number = 20, _y:Number;
public function update(delta:Number):void
{
if(gravity){
_y += delta * 120;
}
if(_y + skin.image.height > game.stage.stageHeight){
_y = game.stage.stageHeight - skin.image.height;
gravity = false;
}
if(right && left){
skin.playAnimation("none");
}else if(left){
_x -= delta * speed;
skin.playAnimation("left");
}else if(right){
_x += delta * speed;
skin.playAnimation("right");
}
//update skin
skin.update(delta, Math.round(_x), Math.round(_y));
}
кожи Метод обновления:
public function update(delta:Number, x:int, y:int):void
{
image.x = x;
image.y = y;
if(currentAnimation){//this is texture switching (I tried without, still happens)
currentAnimation.update(delta);
}else{
image.texture = textures[4];
}
}
Here это игра.
попробуйте очистить/перерисовать родительский контейнер после перемещения – Misiakw
Я думаю, что Starling/Stage3D делает это автоматически. Имеет ли это? – Duckdoom5
Я никогда не работал с Starling/Stage3D, но это было бы моим первым предположением. Тем не менее стоит попытаться вызвать invalidateDisplayList() ou updateDisplayList() в родительском контейнере. – Misiakw