2

嗨朋友我提供以下代码,任何人都可以让我知道如何在给定的两个图像/对象之间找到碰撞检测。如果可能,请尽快帮助我。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img1=(ImageView) findViewById(R.id.imgLeft);
        img2=(ImageView) findViewById(R.id.imgRight);

        tw=ObjectAnimator.ofFloat(img2,
                "translationX", 20, -550f);
        tw.setDuration(6000);
        tw.addUpdateListener(new AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                img_one_CurrentX=(int)img2.getY();

            }
        });
        tw.start();


        tw_One=ObjectAnimator.ofFloat(img1,
                "translationX",0, 550f);
        tw_One.setDuration(6000);
        tw_One.setTarget(img1);
        tw_One.start();
        tw_One.addUpdateListener(new AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                img_two_CurrentX=(int)img1.getY();

                if(img_one_CurrentX==img_two_CurrentX ){
                    Toast.makeText(getApplicationContext(), "Collision", Toast.LENGTH_LONG).show();
                }
            }
        });

    }

提前致谢。

4

2 回答 2

2

嗨,经过努力的朋友,我终于找到了一个好的解决方案。与我完美配合我还分享了一些我的代码快照。

tw_One.addUpdateListener(new AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {

            int x1=(int)img1.getX();
            int y1=(int)img1.getY();
            int width1=img1.getWidth();
            int height1=img1.getHeight();
            int x2=(int)img2.getX();
            int y2=(int)img2.getY();
            int width2=img2.getWidth();
            int height2=img2.getHeight();
            int right1 = x1 + width1;
            int right2 = x2 + width2;
            int bottom1 = y1 + height1;
            int bottom2 = y2 + height2;
            if(RunningTest)
            {
                if (x2 >= x1 && x2 <= right1 && y2 >= y2 && y2 <= bottom1)
                {
                    obj.end();
                }

                if (right2 >= x1 && right2 <= right1 && bottom2 >= y2 && bottom2 <= bottom1)
                {
                    obj.end();
                }


    });
于 2013-10-22T06:36:23.393 回答
0

很好的解决方案!:) 我找了好几个小时!但是我解决的if条件中有一个简单的错误:

if (x2 >= x1 &&
    x2 <= right1 &&
    y2 >= y1 &&
    y2 <= bottom1) {
    // do something...
}

if (right" >= x1 &&
    right2 <= right1 &&
    bottom2 >= y1 &&
    bottom2 <= bottom2) {
    // do something...
} 
于 2017-01-28T14:03:53.037 回答