日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android---OpenGLES之響應(yīng)觸屏事件

像旋轉(zhuǎn)三角形那樣,讓對象根據(jù)預(yù)設(shè)的程序來移動,以便有助于獲取人們的關(guān)注,但是如 果想要讓你的OpenGL ES圖形跟用戶交互,應(yīng)該怎樣做呢?要讓你的OpenGL ES應(yīng)用程序能夠觸碰交互的關(guān)鍵是擴(kuò)展你的GLSurfaceView實現(xiàn),重寫它的onTouchEvent()方法來監(jiān)聽觸碰事件。

創(chuàng)新互聯(lián)是一家專業(yè)提供興安企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為興安眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

本文介紹如何監(jiān)聽觸碰事件,讓用戶可以旋轉(zhuǎn)OpenGL ES對象。

設(shè)置觸碰監(jiān)聽器

為了讓你的OpenGL ES應(yīng)用程序響應(yīng)觸碰事件,你必須在你GLSurfaceView類中實現(xiàn)onTouchEvent()事件。以下實現(xiàn)的示例顯示如何監(jiān)聽MotionEvent.ACTION_MOVE事件,并把它們轉(zhuǎn)換成圖形旋轉(zhuǎn)的角度。

 
 
 
  1. @Override 
  2.   public boolean onTouchEvent(MotionEvent e) { 
  3.   // MotionEvent reportsinput details from the touch screen 
  4.   // and other inputcontrols. In this case, you are only 
  5.   // interested in eventswhere the touch position changed. 
  6.   float x = e.getX(); 
  7.   float y = e.getY(); 
  8.   switch (e.getAction()) { 
  9.   case MotionEvent.ACTION_MOVE: 
  10.   float dx = x - mPreviousX; 
  11.   float dy = y - mPreviousY; 
  12.   // reverse direction of rotation above the mid-line 
  13.   if (y > getHeight() / 2) { 
  14.   dx = dx * -1 ; 
  15.   } 
  16.   // reverse direction of rotation to left of the mid-line 
  17.   if (x < getWidth() / 2) { 
  18.   dy = dy * -1 ; 
  19.   } 
  20.   mRenderer.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR; // = 180.0f /320 
  21.   requestRender(); 
  22.   } 
  23.   mPreviousX = x; 
  24.   mPreviousY = y; 
  25.   return true; 
  26.   } 

注意,計算旋轉(zhuǎn)的角度之后,這個方法調(diào)用了requestRender()方法來告訴渲 染器,到了渲染幀的時候了。上例中所使用的方法是最有效的,只有在有旋轉(zhuǎn)變化時,幀才會被重繪。但是要想只在數(shù)據(jù)變化的時候,才請求渲染器重繪,就要使用 setRenderMode()方法來設(shè)置繪制模式。

 
 
 
  1. publicMyGLSurfaceView(Context context){ 
  2.   ... 
  3.   // Render the view onlywhen there is a change in the drawing data 
  4.   setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 
  5.   } 

暴露旋轉(zhuǎn)的角度

上例代碼要求你通過添加一個公共的成員變量,通過渲染器把旋轉(zhuǎn)的角度暴露出來。因為渲染器代碼運行在一個獨立于主用戶界面線程之外的線程中,所以你必須聲明一個公共變量,代碼如下:

 
 
 
  1. publicclassMyGLRendererimplementsGLSurfaceView.Renderer{ 
  2.   ... 
  3.   public volatile float mAngle; 

應(yīng)用旋轉(zhuǎn)

以下代碼完成由觸碰輸入所產(chǎn)生的旋轉(zhuǎn):

 
 
 
  1. publicvoidonDrawFrame(GL10 gl){ 
  2.   ... 
  3.   // Create a rotation forthe triangle 
  4.   // long time =SystemClock.uptimeMillis() % 4000L; 
  5.   // float angle = 0.090f *((int) time); 
  6.   Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f); 
  7.   // Combine the rotationmatrix with the projection and camera view 
  8.   Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0); 
  9.   // Draw triangle 
  10.   mTriangle.draw(mMVPMatrix); 
  11.   } 

本文譯自:http://developer.Android.com/training/graphics/opengl/touch.html


網(wǎng)站欄目:Android---OpenGLES之響應(yīng)觸屏事件
分享路徑:http://www.5511xx.com/article/ccecgoo.html