如何在发动机中移动终点线

时间:2012-11-25 23:41:59

标签: android andengine

我遇到了问题,希望有人帮助我。我正在使用 Andengine 在Android游戏中工作。现在我遇到了一个问题,需要花费很多时间,我无法解决

我在场景中绘制了一条线,我希望在1或2秒内将终点(x2,y2)移动到另一个点作为动画。 例如,行(x1 = 5,y1 = 0)和(x2 = 5,y2 = 10),我希望此行更高但动画中(x1 = 5, y1 = 0)和(x2 = 5,y2 = 100)

请帮助我

3 个答案:

答案 0 :(得分:2)

我找到了一个解决方案,而且非常简单。我创建了一个继承自MoveModifier class的新修饰符,并覆盖了更新方法:

public class LineMoveModifier extends MoveModifier{

public LineMoveModifier(float pDuration, float pFromX, float pToX,
        float pFromY, float pToY) {
    super(pDuration, pFromX, pToX, pFromY, pToY);
    // TODO Auto-generated constructor stub
}
public LineMoveModifier(final float pDuration, final float pFromX, final float pToX, final float pFromY, final float pToY, final IEntityModifierListener pEntityModifierListener, final IEaseFunction pEaseFunction) {
    super(pDuration, pFromX, pToX, pFromY, pToY, pEntityModifierListener, pEaseFunction);
}

@Override
protected void onSetValues(final IEntity pEntity, final float pPercentageDone, final float pX, final float pY) {
    Line x = (Line)pEntity;
    x.setPosition(x.getX1(), x.getY1(), pX, pY);
}

}

现在以使用它为例:

x = new Line(0, 0, 5, 5, 5, getVertexBufferObjectManager(), DrawType.DYNAMIC);
     LineMoveModifier lmm = new LineMoveModifier(5, 5, 400, 5, 700);
     mainScene.attachChild(x);

希望有所帮助:)

答案 1 :(得分:0)

您可以使用Move Modifier

MoveModifier modifier = new MoveModifier(1.5f, point.x, point.x, point.y, point.y + 30)

并使用registerEntityModifier到你的观点:

point.registerEntityModifier(modifier);

并在您的updateHandler绘制线中:

scene.registerUpdateHandler(new IUpdateHandler() {

    @Override
    public void reset() {}

    @Override
    public void onUpdate(float pSecondsElapsed) {
           //draw line between 2 points
    }
}

答案 2 :(得分:0)

我认为,您可以更轻松地分离当前行并创建包含所需元素的新行。我认为使用修饰符会更快更容易。