Нужна помощь в создании вращающегося образца диска для Android - PullRequest
0 голосов
/ 02 апреля 2012

Я нахожусь в процессе создания приложения, похожего на приложение SPINNING A BOTTLE, все, что у меня есть, - это одно изображение диска, и когда пользователь касается диска и должен иметь возможность вращать его в любом направлении, пользователь также может держать диски управляйте вращением диска (точно так, как DJ крутит диск на дискотеке),

Мой вопрос: мне нужно использовать какие-либо вещи opengl, или это можно сделать с помощью самого API?

или мне нужно перейти на FLASH?

1 Ответ

2 голосов
/ 02 апреля 2012

Как программист, вы должны иметь очень четкую концепцию того, как вы будете абстрагировать идею макроса вашей игры в отдельные, выполнимые компоненты, чтобы при задании вопросов о StackOverflow или других компонентах они были более строки «Как определить угол падения между осью X и линией, сгенерированной точкой, по которой пользователь щелкает, и центральным положением моего спрайта из бутылки», а не «Как построить игру?». Как вы можете обнаружить (возможно, нет, если я неверно оцениваю ваш вопрос), предстоит проделать большую работу.

Моя рекомендация, если вы хотите ускорить разработку, - это использовать существующую среду, а не переписывать большую часть базового кода самостоятельно (например, Cocos2D для Android ), а затем использовать такие концепции, как Вышеупомянутый, чтобы выполнить функциональность, которую вы ищете:

Вам все еще придется исследовать такие темы, как загрузка графики и рисование их на экране + получение пользовательского ввода.


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

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.widget.ImageView;

public class TestImages extends Activity {

    private float ANGLE = 30;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView image = (ImageView) findViewById(R.id.test_image);
        Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bottle);
        Matrix mat = new Matrix();

        // Realistically, you would be computing angle using technique
        // similar to the links I posted, and you would want this to be
        // updated every frame or every time a 'drag' event occurred, rather
        // than just once when the app started
        mat.postRotate( ANGLE );
        Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), mat, true);
        image.setImageBitmap(bMapRotate);
    }
}
...