您的活动班(或您的活动班)应如此:
public class stackoverflowTest extends Activity {
GLSurfaceView glSurface;
MyRenderer myRenderer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myRenderer = new MyRenderer(this);
//Create an instance of the Renderer with this Activity
glSurface = (GLSurfaceView) findViewById(R.id.graphics_glsurfaceview1);
//Set our own Renderer and hand the renderer this Activity Context
glSurface.setEGLConfigChooser(true);
glSurface.setRenderer(myRenderer);
//Set the GLSurface as View to this Activity
}
/**
* this is the method the button click calls
*/
public void changeRotationDirection(View v){
myRenderer.changeRotationDirection();
}
}
之后,在您的 render子里:
public class MyRenderer implements Renderer {
private float rotationDirection = 1.0f;
public MyRenderer(Context context){
this.context = context;
}
public void setRotationDirection(){
if(rotationDirection==1.0f){
rotationDirection=-1.0f;
} else {
rotationDirection=1.0f;
}
}
@Override
public void onDrawFrame(GL10 gl) {
// GL calls
gl.glRotatef(angle, rotateDirection, 0.0f, 0.0f);
// draw cube
gl.glDrawArrays( etc );
}
}
基本上,你使用<条码>glRotatef,在你提用之前先轮用。 使用——对角参数(第一)或x,yz数值参数进行变换。 使用方法可打电话到<代码>Renderer,与密码通信并更新现场。 谨慎使用这一方法,因为放电器和主线/天线(从发出国呼的地方)可能会出现同步化问题。
在XML布局(任何观点)中添加<代码>android:onClick=“changeRotationDirection”。 t必须只是一个 but子。 在XML布局中宣布的任何纽扣式方法必须采用<代码>公开无效[方法名称]([名称])编码>,并且必须从纽扣地起活动类别。
更先进的插线控制,按照Erik的建议进行检查,并检查。 On TouchListeners
(Note: if you re using openGL-ES 2.0 or above (android 2.2+) then use GLES20.glRotatef()
)