首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水平移动<ImageView>按<Button>

水平移动<ImageView>按<Button>
EN

Stack Overflow用户
提问于 2016-09-25 11:45:18
回答 1查看 801关注 0票数 0

我正在用AndroidStudio开发一个空间入侵者(没有Libgdx,游戏.)只使用Java和XML我有个问题..。我希望你能帮我。

首先,这是我的

正如你所看到的,在RelativeLayout的底部你可以找到一艘宇宙飞船和两个按钮(一个在左边,另一个在右边)。按钮是看不见的。左边的按钮有"control_izquierda“作为id,右边的按钮是"control_derecha”。

当你按左键时,宇宙飞船向右移动,当你按右键时,飞船向左移动(这是完美的)。

我的问题是在按下其中一个按钮时移动飞船(,当我按下按钮时,飞船应该移动)。我尝试过不同的方法来尝试,但我找不到正确的解决方案。

这是我的java代码

代码语言:javascript
复制
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"),我希望当按钮按住时,飞船移动,当按钮不再按下时,飞船停止。

我很感激你的帮助。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 12:11:53

您需要的是一个处理动画单击此处查看api文档的动画师。

一旦您理解了基本流程,就只需创建一个具有不同值的xml文件(在您的例子中,转换为 )。因此,在单击java代码的按钮中,您可以简单地启动这个动画xml文件。

//示例xml

代码语言:javascript
复制
<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代码用于使用

代码语言:javascript
复制
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

希望这能有所帮助。如果它对你有什么改变,请告诉我。

编辑:我从评论中了解到,您正在寻找一个更复杂的解决方案,该解决方案涉及创建游戏,而不仅仅是简单的动画。

因此,我想与你们分享一个资源,这肯定会帮助你们解决这个和未来的项目。这里不可能用答案来解释游戏发展的各个方面。

点击这里获得详细的android空间游戏教程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39686439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档