1

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

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

请帮我

4

3 回答 3

2

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

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);

希望能帮助到你 :)

于 2012-11-26T19:59:54.477 回答
0

您可以使用移动修改器

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
    }
}
于 2012-11-26T05:55:44.210 回答
0

我认为,分离当前行并创建一个包含所需元素的新行会更容易。我认为它会比使用修饰符更快更容易。

于 2012-11-26T13:46:35.297 回答