(6)響應觸控事件

2021-07-24 13:02:38 字數 1338 閱讀 5891

讓物件按著預設的程式移動比如旋轉三角形,看起來是有些亮點的,但是如果你想讓使用者和你的opengl es圖形進行互動,該如何做呢?

使你的opengl es程式可以觸控互動的關鍵是,實現glsu***ceview的過載方法ontouchevent(),讓它可以監聽觸控事件。

這篇文章將向你展示如何監聽觸控事件讓使用者旋轉乙個opengl es圖形。

為了使你的opengl es應用響應觸控事件,你必須在你glsu***ceview 類中實現ontouchevent()事件。下面的例子演示了如何監聽motionevent.action_move 事件然後把它們轉換成乙個形狀的旋轉角度。

@override

public

boolean

ontouchevent(motionevent e)

// reverse direction of rotation to left of the mid-line

if (x < getwidth() / 2)

mrenderer.mangle += (dx + dy) * touch_scale_factor; // = 180.0f / 320

requestrender();

} mpreviousx = x;

mpreviousy = y;

return

true;

}

注意在計算完旋轉角度之後,本方法呼叫requestrender() 來告訴renderer要渲染幀了。這樣做是很高效的,因為在沒有發生旋轉時不需要重畫幀。然而,在你沒有要求只在資料發生改變才重畫之前,還不能達到最高效:

public myglsu***ceview(context context)
上面的例子要求你向其它類曝露出你的旋轉角度,所以你要為你的renderer新增乙個public成員。既然renderer的**執行於主介面之外的單獨執行緒中,你必須宣告這個公開變數為volatile,用以保證執行緒在每次使用變數的時候,都會讀取變數修改後的最新值。**如下:

public

class

myglrenderer

implements

glsu***ceview.renderer

直接將旋轉角度傳入opengl es 的旋轉函式即可,前面已經解讀過這一塊**,在這裡只貼一下**:

public void ondrawframe(gl10 gl)
至此,整個android開發者的opengl es demo都已分析完畢,後續會接著介紹如何使用opengl es繪製影象。

OpenGL ES 6 響應觸控事件

要響應觸控事件,就需要實現glsu ceview的ontouchevent 方法來監聽觸控事件。設定乙個觸控監聽 下面的 監聽motionevent.action move事件,然後旋轉形狀乙個角度。override public boolean ontouchevent motionevente ...

ios觸控事件響應鏈個人總結

在如下圖所示的檢視層次中,假設使用者觸控的時e檢視,在呼叫hittest withevent 時 首先對a進行測試,返回yes,繼續對b和c進行測試 對b測試返回no,不再繼續往下測試,轉而對c進行測試 對c測試返回yes,繼續對d和e進行測試 對d測試返回no,不再繼續往下測試,轉而對e進行測試 ...

觸控事件的產生 傳遞與響應

主視窗會在檢視層次結構中,通過hittest方法尋找最合適的檢視view來處理觸控事件,事件處理的第一步 找到合適的檢視view控制項之後,就會呼叫該控制項的touches方法來處理相應的事件 事件的傳遞 觸控事件的傳遞是從父控制項傳遞到子控制項的,以下圖為例,事件的傳遞過程如下 點選藍色 點選來黃...