Change Vertex massive in Renderer class from MainActivity onTouchEvent
i am newbie in android developement and thi is my question, how i can
change Vertex massive inside class "MainRenderer" inside class "Ship" from
MainActivity onTouchEvent?
Here is my code: MainActivity.java:
package com.example.galaga2d;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.app.Activity;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
public class MainActivity extends Activity {
//private boolean isTouch = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Óáèðàåì òàéòë ïðèëîæåíèÿ, òîáèøü äåëàåì åãî FullScreen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Ñîçäà¸ì íîâûé Surface è óñòàíàâëèâàåì MainRenderer
GLSurfaceView view = new GLSurfaceView(this);
view.setRenderer(new MainRenderer());
view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
setContentView(view);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int upX = (int) event.getX();
int upY = (int) event.getY();
int downX = (int) event.getX();
int downY = (int) event.getY();
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "ÂÍÈÇ "+"X: "+X+" Y: "+Y,
Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_MOVE:
Toast.makeText(this, "ÄÂÈÆÅÍÈÅ "+"X: "+X+" Y: "+Y,
Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_UP:
Toast.makeText(this, "ÂÂÅÐÕ "+"X: "+X+" Y: "+Y,
Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}
and MainRenderer.java:
package com.example.galaga2d;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.ByteOrder;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView.Renderer;
public class MainRenderer implements Renderer {
public int playerSize = 0;
private Ship playerShip = new Ship();
private Astedoid enemyAstedoid = new Astedoid();
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
playerShip.draw(gl);
enemyAstedoid.draw(gl);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0, width, height, 0, 1, -1);
gl.glMatrixMode(GL10.GL_MODELVIEW);
}
//
--------------------------------------------------------------------------------
class Ship {
public int health = 100;
public int life = 3;
public FloatBuffer ShipVertexBuffer;
public float ShipVerticles[] = {
5, 5, // ëåâî íèç
5, 10, // ëåâî ââåðõ
10, 5, // ïðàâî íèç
10, 10 // ïðàâî ââåðõ
};
public Ship() {
ByteBuffer bb = ByteBuffer.allocateDirect(36);
bb.order(ByteOrder.nativeOrder());
ShipVertexBuffer = bb.asFloatBuffer();
ShipVertexBuffer.put(ShipVerticles);
ShipVertexBuffer.position(0);
}
public void draw(GL10 gl) {
gl.glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, ShipVertexBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
}
}
class Astedoid {
public int health = 100;
public int life = 3;
public FloatBuffer AsteroidColorBuffer;
public FloatBuffer AsteroidVertexBuffer;
public float AsteroidVerticles[] = {
25, 25, // ëåâî íèç
25, 30, // ëåâî ââåðõ
30, 25, // ïðàâî íèç
30, 30 // ïðàâî ââåðõ
};
public Astedoid() {
ByteBuffer bb = ByteBuffer.allocateDirect(36);
bb.order(ByteOrder.nativeOrder());
AsteroidVertexBuffer = bb.asFloatBuffer();
AsteroidVertexBuffer.put(AsteroidVerticles);
AsteroidVertexBuffer.position(0);
}
public void draw(GL10 gl) {
gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, AsteroidVertexBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
}
}
//
--------------------------------------------------------------------------------
}
I want do this, create some variable like "objectSize" and give it some
value 5 in main activity onTouchEvent on "case MotionEvent.ACTION_DOWN",
for example:
case MotionEvent.ACTION_DOWN:
objectSize = 5;
break;
than i want to use this variable to change size of drawing object in
MainRenderer in class Ship, for example:
public float ShipVerticles[] = {
5*objectSize , 5*objectSize,
5*objectSize, 10*objectSize,
10*objectSize, 5*objectSize,
10*objectSize, 10*objectSize
};
How i can do this? Thx!
No comments:
Post a Comment