- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要在 touchevent 上移动的 sprite。应该有某种箭头指向计划移动的方向。该运动应该在 Action_Up 9 上成为明星)。问题在于旋转中心和锚定中心。它应该是这样工作的:当你触摸 sprite 时,会出现箭头和蓝色圆圈(稍后箭头的数量将取决于手指与 sprite 的距离,显示移动的强度)。第一个箭头附加到 Sprite ,另一个箭头附加到第一个等等。所以当你移动手指时,第一个箭头底部的中心应该围绕我的 Sprite 中心旋转。 (我希望它很清楚,它与 Angy Birds 的概念相似,您可以在其中移动手指瞄准并设定力量)。问题是我无法设置坐标。例如,为旋转中心或 anchor 中心设置坐标 (50f, 50f) 会使我的箭头围绕远离 Sprite 中心的点移动。我认为将坐标除以 32 会有所帮助,但没有帮助。即使像 (0.5f, 0.5f) 这样的坐标也会将我的箭头移动超过 0.5 个像素。我正在使用 andEngine GLES2-AnchorCenter
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
arrow = new Sprite(0, 0, 110, 70, ResourceManager.getInstance().mArrowregion, getVertexBufferObjectManager());
arrow2 = new Sprite(55, 70, 110, 70, ResourceManager.getInstance().mArrowregion, getVertexBufferObjectManager());
arrow3 = new Sprite(55, 70, 110, 70, ResourceManager.getInstance().mArrowregion, getVertexBufferObjectManager());
arrow4 = new Sprite(55, 70, 110, 70, ResourceManager.getInstance().mArrowregion, getVertexBufferObjectManager());
circle = new Sprite(50, 50, 300, 300, ResourceManager.getInstance().mBlueCircleRegion, getVertexBufferObjectManager());
arrow.setAnchorCenter(25.0f/32, -10.0f/32);
arrow.setRotationCenter(0, 0);
arrow.setAlpha(0.4f);
arrow2.setAlpha(0.6f);
arrow3.setAlpha(0.8f);
arrow4.setAlpha(1.0f);
circle.setAlpha(0.3f);
this.attachChild(circle);
this.attachChild(arrow);
arrow.attachChild(arrow2);
arrow2.attachChild(arrow3);
arrow3.attachChild(arrow4);
}
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_MOVE){
arrow.setRotation(0 + pSceneTouchEvent.getX());
}
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP){
arrow.detachSelf();
circle.detachSelf();
arrow.dispose();
circle.dispose();
body.setLinearVelocity(-((pSceneTouchEvent.getX()/32 - body.getPosition().x) * 10), -((pSceneTouchEvent.getY()/32 - body.getPosition().y) * 10));
}
return true;
}
编辑:
当我使用时有效:
arrow = new Sprite(50, 100, ...)
arrow.setRotationCenter(0.5f, -0.25f);
并且没有设置锚定中心。
为什么我需要 X 和 Y 的值低于 1f 作为旋转中心?
最佳答案
setRotationCenter
通常应该在 0.0 到 1.0 的范围内,因为它们是对象的宽度/高度的比例,例如:setRotationCenter(0.5f, 0.5f)
将使对象围绕其中心旋转。
GLES2-AC中的setRotationCenter
与GLES2中的setRotationCenter
不同
有关更多信息,我建议您点击此链接:
在这个链接中,你有这些功能:
protected void updateLocalRotationCenter() {
this.updateLocalRotationCenterX();
this.updateLocalRotationCenterY();
}
protected void updateLocalRotationCenterX() {
this.mLocalRotationCenterX = this.mRotationCenterX * this.mWidth;
}
protected void updateLocalRotationCenterY() {
this.mLocalRotationCenterY = this.mRotationCenterY * this.mHeight;
}
如您所见,旋转中心值 (X,Y) 与实体的宽度和高度相乘,这就是为什么它们应该在 0.0-1.0 之间
关于android - 无法为 andEngineGLES2-AC 中的 Sprite 设置 .setAnchorCenter() 和 .setRotationCenter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801850/
我试图从一个点旋转一个对象,该点在旋转时会发生变化。 当我调用 setRotationCenter(float,float) 时,对象的图像移动到某个任意点。这只发生在旋转的对象上,我的意思是,如果我
我有一个要在 touchevent 上移动的 sprite。应该有某种箭头指向计划移动的方向。该运动应该在 Action_Up 9 上成为明星)。问题在于旋转中心和锚定中心。它应该是这样工作的:当你触
我是一名优秀的程序员,十分优秀!