Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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 如何在android studio上移动精灵?_Java_Android_Android Studio_Animation_Sprite - Fatal编程技术网

Java 如何在android studio上移动精灵?

Java 如何在android studio上移动精灵?,java,android,android-studio,animation,sprite,Java,Android,Android Studio,Animation,Sprite,我是编程新手,我正试图在Android Studio中制作一个怪物从左向右移动的游戏。我已经有了一个明确的背景,我的怪物必须越过它。在编写文档之后,使用Sprite似乎是最好的解决方案。我试图重现我在几次托托里看到的东西,但什么都做不到。如果有人能告诉我应该遵循的程序,我开始失去希望:) 我有一个怪物: dic_Army.put("Monster1",new Army("Monster1","larvezouple_foreground"

我是编程新手,我正试图在Android Studio中制作一个怪物从左向右移动的游戏。我已经有了一个明确的背景,我的怪物必须越过它。在编写文档之后,使用Sprite似乎是最好的解决方案。我试图重现我在几次托托里看到的东西,但什么都做不到。如果有人能告诉我应该遵循的程序,我开始失去希望:)

我有一个怪物:

dic_Army.put("Monster1",new Army("Monster1","larvezouple_foreground",20,2000,50,50,100,1,10,0));  
当我点击一个按钮时,我想创建一个与这个怪物相关的精灵,让它在两点之间移动

        btArmy1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Sprite sprite = new Sprite (bitmap1,100,100,50,50,3,3);
                sprite.draw(canvas);
            }
        });
我的精灵构造函数如下所示:

    public Sprite(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) {
        this.bitmap = bitmap;
        this.x = x;
        this.y = y;
        currentFrame = 0;
        frameNr = frameCount;
        spriteWidth = bitmap.getWidth() / frameCount;
        spriteHeight = bitmap.getHeight();
        sourceRect = new Rect(0, 0, spriteWidth, spriteHeight);
        framePeriod = 1000 / fps;
        frameTicker = 0l;
    }
    public void draw(Canvas canvas) {
        Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight);
        canvas.drawBitmap(bitmap, sourceRect, destRect, null);
        canvas.drawBitmap(bitmap, 20, 150, null);
        Paint paint = new Paint();
        paint.setARGB(50, 0, 255, 0);
        canvas.drawRect(20 + (currentFrame * destRect.width()), 150, 20 + (currentFrame * destRect.width()) + destRect.width(), 150 + destRect.height(),  paint);
    }
绘制方法如下所示:

    public Sprite(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) {
        this.bitmap = bitmap;
        this.x = x;
        this.y = y;
        currentFrame = 0;
        frameNr = frameCount;
        spriteWidth = bitmap.getWidth() / frameCount;
        spriteHeight = bitmap.getHeight();
        sourceRect = new Rect(0, 0, spriteWidth, spriteHeight);
        framePeriod = 1000 / fps;
        frameTicker = 0l;
    }
    public void draw(Canvas canvas) {
        Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight);
        canvas.drawBitmap(bitmap, sourceRect, destRect, null);
        canvas.drawBitmap(bitmap, 20, 150, null);
        Paint paint = new Paint();
        paint.setARGB(50, 0, 255, 0);
        canvas.drawRect(20 + (currentFrame * destRect.width()), 150, 20 + (currentFrame * destRect.width()) + destRect.width(), 150 + destRect.height(),  paint);
    }

如果您添加与问题相关的部分代码,人们可能会更好地帮助您