我遇到了问题,希望有人帮助我。我正在使用 Andengine 在Android游戏中工作。现在我遇到了一个问题,需要花费很多时间,我无法解决
我在场景中绘制了一条线,我希望在1或2秒内将终点(x2,y2)移动到另一个点作为动画。 例如,行(x1 = 5,y1 = 0)和(x2 = 5,y2 = 10),我希望此行更高但动画中(x1 = 5, y1 = 0)和(x2 = 5,y2 = 100)
请帮助我
答案 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)
我认为,您可以更轻松地分离当前行并创建包含所需元素的新行。我认为使用修饰符会更快更容易。