需要帮助为Android创建旋转光盘样本

时间:2012-04-02 13:49:41

标签: android opengl-es android-animation

在创建类似于SPINNING A BOTTLE应用程序的应用程序的过程中,我所拥有的只是一张光盘的单个图像,当用户触摸磁盘并且能够将其旋转到任何方向时,用户也可以按住光盘并控制光盘旋转,(完全按照DJ在Disco中旋转光盘的方式),

我的问题是我是否需要使用任何opengl内容,或者这可以通过API本身来完成?

还是我需要去寻找FLASH?

1 个答案:

答案 0 :(得分:2)

作为一名程序员,你应该有一个非常强大的概念,即如何将游戏的宏观思想抽象为单独的,可完成的组件,这样当你在StackOverflow或其他问题上提问时,它们就会更加顺畅。 “我如何计算X轴与用户点击的点所产生的线之间的入射角度以及我的瓶子精灵的中心位置”而不是“如何构建游戏?”。正如您可能发现的那样(如果我对您的问题的评估不正确,可能不会),还有很多工作要做。

我建议如果你想加速你的开发是利用现有的框架,而不是自己重写很多基本代码(例如 Cocos2D for 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);
    }
}