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更新メソッドをオーバーライドする新しい修飾子を作成しました。

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を使用できます

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 に答える