java – 当给定75:android时,条件不会触发

好吧,所以这可能是一个愚蠢的问题,一个业余程序员试图尝试他的方式基本使用 Android图形,但在这里.

为了让我熟悉2D Android图形来帮助我的朋友,他希望我将他的想法用于他的游戏,我决定尝试制作一个简单版本的乒乓. (简单的意思我甚至没有让两个桨都移动)

离开Android API guides,我围绕一个具有3个ShapeDrawable对象(矩形)的自定义view对象(PongView)构建了实验应用程序.两个桨(我称之为棍棒)和球.我在一个视图中实现了一个MotionEventListener,并让左手杆随之移动(我想出了一些东西:).

之后,我通过使用在主活动中创建的延迟Runnable来移动球,该活动在自定义视图中调用更新方法.在更新方法中,我制作了一个碰撞处理程序,当它碰到屏幕的两侧或桨的任何一侧时,它会反转球的矢量(在特定的轴上).

但在玩完它后,我看到我的一个碰撞条件没有开火.球将穿过杆的底部和右侧,当它击中左侧或顶部时弹跳.

以下是碰撞条件:

//collisions
    if ((bx + bside == getMeasuredWidth() || bx == 0) || //hit right or left of screen
            ((bx + bside == lx || bx == lx + width) && (by < ly + height && by > ly)) || //hit left stick
            ((bx + bside == rx || rx + width == bx) && (by < ry + height && by > ry))) { //hit right stick
        bVectorX = -bVectorX;
        System.out.println("bounce x");
    }
    if ((by + bside == getMeasuredHeight() || by == 0) ||
            ((by + bside == ly || by == ly + height) && (bx < lx + width && bx > lx)) ||
            ((by + bside == ry || by == ry + height) && (bx < rx + width && bx > rx))) {
        bVectorY = -bVectorY;
        System.out.println("bounce y");
    }

> bside:球方的边长(像素)
>宽度:桨的宽度
>高度:桨的高度
> bVectorX:在x轴上更新每次更新的坐标(像素)
> bx:球的x坐标
> by:球的y坐标
> lx:左侧球拍的x坐标

试图缩小问题范围,我评论了除了这个声明之外的所有声明,因为这句话给了我麻烦(至少在x轴上):

bx == lx + width

我意识到由于lx在运行时没有改变,我可以插入原始值(75)进行测试,看看是否会导致条件触发.它没有.所以我决定尝试76,然后猜猜是什么,它有效!我不知道为什么,但它有效.球在那条像素线处反弹.所以我尝试重新放入变量,尝试:

bx == lx + width + 1
   bx == lx + width - 1

他们都工作了!然而,当我拿走一个/ – 1时,它会直接穿过桨并从击中另一侧弹出. (因为我所做的就是反转矢量).我想要它做的是击中桨的右侧并反转矢量.

我不知道为什么会发生这种情况,提前谢谢你的帮助:)

编辑:所以我测试了条件,发现这两段代码返回true.

if (75 == 75) {

    int i = 75;
    if (i == 75) {

但这仍然永远不会真实.

if (bx == 75) {

再次感谢支持.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...