我遇到了问题,希望你们中的某个人可以帮助我。我正在使用Andengine在 Android 游戏中工作。现在我遇到了一个需要花费我很多时间但我无法解决的问题
我在场景中画了一条线,我想在 1 或 2 秒内将终点 (x2, y2) 移动到另一个点作为动画。例如,线(x1 = 5, y1 = 0) 和 (x2 = 5, y2 = 10),我希望这条线更高,但在动画中为(x1 = 5, y1 = 0) 和 (x2 = 5, y2 = 100)
请帮我
我找到了一个解决方案,而且非常简单。我创建了继承自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);
希望能帮助到你 :)
您可以使用移动修改器
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
}
}
我认为,分离当前行并创建一个包含所需元素的新行会更容易。我认为它会比使用修饰符更快更容易。