Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在给定值之前隐藏图像_Java_Android_Sprite - Fatal编程技术网

Java 在给定值之前隐藏图像

Java 在给定值之前隐藏图像,java,android,sprite,Java,Android,Sprite,我正在制作一个应用程序,我已经让它工作了一些,但谢天谢地,我知道我的问题是什么。我有一个围绕边界移动的精灵,我想让精灵在一个特定的位置射出一个球。目前,我的应用程序在位置(0,0)处显示球,然后在应该的时候将其射出。它通过在更新方法中将10添加到x来实现这一点,因此它是一个动画,我可以通过更改10来加速它,以降低它的速度。变量x和y的默认值为0。我不希望按照上述规定进行更改。我希望它们保持默认值为0,但我不希望球在移动之前显示。现在它在启动时显示球,然后移动。一旦我给出x和y值,我希望它显示ba

我正在制作一个应用程序,我已经让它工作了一些,但谢天谢地,我知道我的问题是什么。我有一个围绕边界移动的精灵,我想让精灵在一个特定的位置射出一个球。目前,我的应用程序在位置(0,0)处显示球,然后在应该的时候将其射出。它通过在更新方法中将10添加到x来实现这一点,因此它是一个动画,我可以通过更改10来加速它,以降低它的速度。变量x和y的默认值为0。我不希望按照上述规定进行更改。我希望它们保持默认值为0,但我不希望球在移动之前显示。现在它在启动时显示球,然后移动。一旦我给出x和y值,我希望它显示ball

下面是当前代码的一个片段

        // This moves the ball down the right side of screen
        if (x > ov.getWidth() - width - xSpeed){
            xSpeed = 0;
            ySpeed = 10;
            direction = 1;
            shootL(); // shoots the ball left towards the left side of screen

        }

              // moves ball up the screen on left side
        if (x + xSpeed < 0){
            x = 0;
            xSpeed = 0;
            ySpeed = -10;
            direction = 3;
            shootR();  // shoots the ball towards right side of screen
        }


    private void shootR() {
        // TODO Auto-generated method stub
        // need to manipulate variable q to go across screen
        q += 10;
           // eventually manipulate r so that it shoots at the right spot on screen, not my major problem right now.

    }


    private void shootL() {
        // TODO Auto-generated method stub
        // need to manipulate variable q to go across screen
        q += -10;
           // eventually manipulate r so that it shoots at the right spot on screen, not my major problem right now.
    }


    public void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        update();
        int srcY = direction * height;
        Rect src = new Rect (0, srcY, width, srcY + height);
        Rect dst = new Rect (x, y, x+width, y+height);
        canvas.drawBitmap(b, src,  dst, null); // draws sprite around border
        Paint p = new Paint();
        canvas.drawBitmap(fire, q, r, p); // draws ball that shoots across


    }   
//这会将球向下移动到屏幕右侧
if(x>ov.getWidth()-width-xSpeed){
xSpeed=0;
y速度=10;
方向=1;
shootL();//将球向左射向屏幕左侧
}
//将球在屏幕左侧向上移动
如果(x+x速度<0){
x=0;
xSpeed=0;
y速度=-10;
方向=3;
shooter();//朝屏幕右侧射出球
}
私人空位射手(){
//TODO自动生成的方法存根
//需要操纵变量q以穿过屏幕
q+=10;
//最终操纵r,使其在屏幕上的正确位置射击,而不是我现在的主要问题。
}
私人有限公司{
//TODO自动生成的方法存根
//需要操纵变量q以穿过屏幕
q+=-10;
//最终操纵r,使其在屏幕上的正确位置射击,而不是我现在的主要问题。
}
公共空白onDraw(画布){
//TODO自动生成的方法存根
更新();
int srcY=方向*高度;
Rect src=新的Rect(0,srcY,宽度,srcY+高度);
Rect dst=新的Rect(x,y,x+宽度,y+高度);
drawBitmap(b,src,dst,null);//在边框周围绘制精灵
油漆p=新油漆();
drawBitmap(fire,q,r,p);//绘制射出的球
}   

有人有什么想法或建议吗?它只是在错误的时间显示球,我需要解决这个问题。一定是出错了什么的。

哇,我真是不知所措。我想出来了。我在一个更新方法中更改了坐标,该方法在onDraw方法中调用。onDraw方法遍历每一行代码,然后再次被调用,一次更新一行代码。通过在onDraw中添加一个if语句,并在update中删除q的更改,并将其移动到if语句中,直到if为true,它才绘制


我在换衣服之前正在画画。您需要更改变量,然后绘制

假设球是布局xml文件的一部分,则可以使该视图不可见或消失,除非提供了x&y坐标。这里不是这样吗?@Rajeev,我在做表面视图,而不是xml布局。是的……我看到了你的答案。在你发布答案之前,我已经发表了我的评论。你应该接受你的答案。@Rajeev明天才能这样做。