Перемещение пути с повторяющимся растровым изображением в Android - PullRequest
3 голосов
/ 15 сентября 2010

В настоящее время я пишу игру для Android с боковой прокруткой, и у меня возникли проблемы с заполнением пути повторяющимся растровым изображением. Я создаю путь из ряда координат, чтобы составить «наземную» область. У меня есть персонаж, который зафиксирован в середине холста и экрана и перемещаю путь, чтобы представить движение персонажа. Я смог заполнить путь повторяющимся изображением, используя BitmapShader. Также я могу перемещать фигуру из стороны в сторону на экране. Тем не менее, кажется, что Bitmapshader использует источник по умолчанию 0,0, что означает, что шейдер всегда рисует повторяющееся изображение в одном и том же месте. Это означает, что, хотя путь движется по земле, повторяющееся изображение никогда не появляется. Кто-нибудь знает, как изменить происхождение шейдера, или знает, как лучше заполнить путь повторяющимся изображением?

В качестве альтернативы, может ли кто-нибудь предложить лучшее решение для заполнения рисованной фигуры изображением?

Спасибо Andy

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Спасибо, взглянул на них ... Кажется, что Реплика Айленд довольно часто использует OpenGL, что немного выше меня, и Снейк не совсем сделал то, что я искал ... в конце концов, добрался ...

    //Shape pathShape = this.getPathShape();
    Bitmap groundImage = ImageHandler.getmGroundImage();
    int offset = groundImage.getWidth()-(xPosition%groundImage.getWidth());
    Path path = new Path();
    path.moveTo(coordinates.get(0).getmX(), coordinates.get(0).getmY());

    for ( ShapeCoordinate coordinate : coordinates ) {
        path.lineTo(coordinate.getmX(), coordinate.getmY());
    }

    path.lineTo(coordinates.get(coordinates.size()-1).getmX(), mYBase);
    path.lineTo(coordinates.get(0).getmX(), mYBase);
    path.lineTo(coordinates.get(0).getmX(), coordinates.get(0).getmY());
    path.close();

    PathShape shape = new PathShape(path,canvas.getWidth(),canvas.getHeight());

    BitmapShader bs = new BitmapShader(groundImage, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);

    Matrix matrix = new Matrix();
    matrix.reset();
    matrix.setScale(1,1);
    matrix.preTranslate(offset, 0);
    bs.setLocalMatrix(matrix);

    ShapeDrawable sd = new ShapeDrawable(shape);
    sd.setColorFilter(Color.argb(255, 50*(mLevel+1), 50*(mLevel+1), 50*(mLevel+1)), Mode.LIGHTEN);
    sd.getPaint().setShader(bs);
    sd.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    sd.draw(canvas);   
0 голосов
/ 15 сентября 2010

Вы смотрели пример змеи в андроид sdk? Также Остров Реплики является еще одним примером того, как сделать движок плиток в Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...