我正在使用Java和XML在AndroidStudio中开发一个太空入侵者(没有Libgdx,Gamemaker ......)我有一个问题...我希望你会帮助我。
首先,这是我的app design.
如您所见,在RelativeLayout的底部,您可以找到一个宇宙飞船和两个按钮(左侧一个,右侧另一个按钮)。按钮是不可见的。左键有" control_izquierda"作为id和右键," control_derecha"。
当你按下左按钮时,宇宙飞船向右移动,当你按下右键时,宇宙飞船向左移动(这很有效)。
我的问题当按下其中一个按钮时,它是关于移动飞船的(当我按住按钮时,飞船应移动)。我尝试了不同的尝试方法,但我无法找到正确的解决方案。
这是我的 java代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void actualizaPosicion(View v) {
switch (v.getId()) {
case R.id.control_derecha:
findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() - 30);
break;
case R.id.control_izquierda:
findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() + 30);
break;
}
}
}
当点击其中一个按钮时,我的XML调用" actualizaPosicion"方法。如果单击了右键或左键,然后上传了太空飞船的位置(ID为" nave"),这个方法会检测到,当按钮按住,飞船移动,按钮时我想要不再按,宇宙飞船就停了。
我很感激帮助。
非常感谢你!
答案 0 :(得分:0)
您需要的是动画师处理动画Click here to view api docs
了解基本流程后,您只需创建具有不同值的xml文件(在您的情况下为翻译)。因此,在单击java代码的按钮中,您只需启动此动画xml文件。
//示例xml
<set android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400"
android:fillBefore="false" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400" />
</set>
</set>
//使用的示例java代码
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
希望这会有所帮助。如果它改变了什么,请告诉我。
编辑:我从评论中了解到,您正在寻找一个更复杂的解决方案,涉及创建游戏,而不仅仅是简单的动画。
所以我想与你分享一个资源,这肯定会帮助你完成这个和未来的项目。使用答案来解释游戏开发的每个方面是不可能的。