Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.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
android应用程序toturial 74_Android_Canvas_Youtube - Fatal编程技术网

android应用程序toturial 74

android应用程序toturial 74,android,canvas,youtube,Android,Canvas,Youtube,我在youtube上关注“thenewboston”的toturial,我在第74届toturial,我在触摸“GFXSurface”应用程序的屏幕后立即获得了一个FC。我尝试调试,它停在“canvas.drawBitmap(test,(x-(test.getWidth()/2)),(y-(test.getHeight()/2)),null)行上。” 有什么想法吗? 以下是toturial的链接: 这是我的代码: public class GFXSurface extends Activity

我在youtube上关注“thenewboston”的toturial,我在第74届toturial,我在触摸“GFXSurface”应用程序的屏幕后立即获得了一个FC。我尝试调试,它停在“canvas.drawBitmap(test,(x-(test.getWidth()/2)),(y-(test.getHeight()/2)),null)行上。”

有什么想法吗? 以下是toturial的链接:

这是我的代码:

public class GFXSurface extends Activity implements OnTouchListener {

    MyBringBackSurface ourSurfaceView;
    float x, y, sX, sY, fX, fY;
    Bitmap test, plus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        ourSurfaceView = new MyBringBackSurface(this);
        ourSurfaceView.setOnTouchListener(this);
        Bitmap test = BitmapFactory.decodeResource(getResources(),
                R.drawable.green_ball);
        Bitmap plus = BitmapFactory.decodeResource(getResources(),
                R.drawable.button_plus);
        x=0;
        y=0;
        sX=0;
        sY=0;
        fX=0;
        fY=0;
        setContentView(ourSurfaceView);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        ourSurfaceView.pause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        ourSurfaceView.resume();
    }

    @Override
    public boolean onTouch(View arg0, MotionEvent event) {
        // TODO Auto-generated method stub
        x = event.getX();
        y = event.getY();

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            sX = event.getX();
            sY = event.getY();
            break;
        case MotionEvent.ACTION_UP:
            fX = event.getX();
            fY = event.getY();
            break;
        }
        return true;
    }

    public class MyBringBackSurface extends SurfaceView implements Runnable {

        SurfaceHolder ourHolder;
        Thread ourThread = null;
        Boolean isRunning = false;

        public MyBringBackSurface(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            ourHolder = getHolder();

        }

        public void pause() {
            isRunning = false;
            while (true) {
                try {
                    ourThread.join();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                break;
            }
            ourThread = null;
        }

        public void resume() {
            isRunning = true;
            ourThread = new Thread(this);
            ourThread.start();
        }

        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (isRunning) {
                if (!ourHolder.getSurface().isValid())
                    continue;

                Canvas canvas = ourHolder.lockCanvas();
                canvas.drawRGB(23, 233, 254);

                if (x != 0 && y != 0) {

                    canvas.drawBitmap(test, (x - (test.getWidth() / 2)),
                            (y - (test.getHeight() / 2)), null);
                }
                if (sX != 0 && sY != 0) {

                    canvas.drawBitmap(plus, (sX - (plus.getWidth() / 2)),
                            (sY - (plus.getHeight() / 2)), null);
                }
                if (fX != 0 && fY != 0) {

                    canvas.drawBitmap(plus, (fX - (plus.getWidth() / 2)),
                            (fY - (plus.getHeight() / 2)), null);
                }

                ourHolder.unlockCanvasAndPost(canvas);
            }
        }

    }
}

}
应该是:

test = BitmapFactory.decodeResource(getResources(),
                R.drawable.green_ball);
类中的
test
变量永远不会被设置,当您尝试使用它时,它是空的


(您的
plus
变量也是如此)

您的日志说明了什么?没问题。请随意标记为已接受的答案。
test = BitmapFactory.decodeResource(getResources(),
                R.drawable.green_ball);