Android OpenGL10 输入响应 <6>

OpenGL的承载体是GLSurfaceView,而GLSurfaceView类在很多方面类似于View,那么它同样具有与View的一些待遇,比如也能够响应KeyEvent,MotionEvent事件等等,从前面几篇中,有很多立方体的图形可以在每次重绘的时候,设置不同的位置和旋转角度,就可以实现图形的位置的变化,这里就可以通过触摸事件产生的坐标位置,让图形跟随触摸方向移动或者变换.

整体上不是很难.

<1> : 新建Android studio工程,工程名为PumpKinBasicInput,绘制立方体借鉴了前一篇的.

主类:

package org.pumpkin.pumpkinbasicinput;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;


public class PumpKinMainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        InputSurfaceView inputSurfaceView=new InputSurfaceView(this);
        setContentView(inputSurfaceView/*R.layout.activity_pump_kin_main*/);

    }

}

继承GLSurfaceView类:

package org.pumpkin.pumpkinbasicinput;

import android.content.Context;
import android.opengl.GLSurfaceView;
import android.view.KeyEvent;
import android.view.MotionEvent;

/**
 * Created by Administrator on 2016/5/6.
 */
public class InputSurfaceView extends GLSurfaceView {

    private final float TOUCH_SCALE_FACTOR = 180.0f / 320.0f;
    private float previousX;
    private float previousY;

    private InputRenderer renderer;

    public InputSurfaceView(Context context) {
        super(context);
        renderer=new InputRenderer(context);
        this.setRenderer(renderer);
        this.requestFocus();
        this.setFocusableInTouchMode(true);
    }

    @Override
    public boolean onKeyDown(int keyCode,KeyEvent event){

        switch (event.getAction()){
            case KeyEvent.KEYCODE_DPAD_LEFT:
                renderer.speedY -= 0.1f;
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                renderer.speedY += 0.1f;
                break;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                renderer.speedX -= 0.1f;
                break;
            case KeyEven
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值