Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
cflood
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
#1

Изменить переменную из класса MainActivity в классе MainRenderer - Программирование Android

20.08.2013, 08:42. Просмотров 768. Ответов 1
Метки нет (Все метки)

Ребята подскажите пожалуйста, у менять есть два файла:
MainActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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();
 
            !!! ТУТ ЗАДАЁМ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ SIZE !!!
            
            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;
 
    }
 
}
MainRenderer.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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);
        }
 
    }
    
    
    
// --------------------------------------------------------------------------------
 
}
Цель задачи сделать чтобы из onTouchEvent на MotionEvent.ACTION_DOWN менялось значение некой переменной, например objectSize, после чего она передавалась в MainRenderer в class Ship и там менялось значение в:

Java
1
2
3
4
5
6
public float ShipVerticles[] = {
            5*objectSize, 5*objectSize,     // лево низ
            5*objectSize, 10*objectSize,        // лево вверх
            10*objectSize, 5*objectSize,        // право низ
            10*objectSize, 10*objectSize        // право вверх
        };
Подскажите пожалуйста как можно это реализовать? В итоге по касанию экрана меняется размер прямоугольника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 08:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменить переменную из класса MainActivity в классе MainRenderer (Программирование Android):

Обращение к textView из другого класса (не MainActivity) в AndroidStudio - Программирование Android
Добрый вечер, у меня такой вопрос. В MainActivity можно обращаться к объектам, а если в другом классе требуется, допустим, найти объект...

Как сделать доступ к MainActivity из класса android.app.Instrumentation? - Программирование Android
как сделать доступ к MainActivity из класса android.app.Instrumentation? import android.os.AsyncTask; import org.json.JSONArray;...

Как переназначить переменную в классе - Программирование Android
Здравствуйте. Есть две активности, которые расположены внутри TabWidget в разных вкладках. Для каждой активности есть свой класс. ...

Как изменить Textview из другого класса (класса адаптера RecyclerView) - Программирование Android
У меня есть список RecyclerView тоесть этот файл Basket и файл что реализует cardwiew BasketAdapter. как мне изменить TextView allPrice из...

Ошибка при использовании метода 1 класса во 2 классе - Программирование Android
public LinearLayout LayoutOfScroll; public EditText edBudget; public TextView tvZatrati; public TextView tvOstatok; public...

Изменить переменную в string.xml - Программирование Android
Добрый день! Столкнулся с проблемой изменения значения переменной, находящейся в файле string.xml. Менять эти параметры через свойство...

1
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.08.2013, 11:23 #2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private MainRenderer renderer;
 
public class MainActivity extends Activity {
    //private boolean isTouch = false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          ...
        renderer = new MainRenderer ();
        view.setRenderer(renderer);
}
 
 @Override
    public boolean onTouchEvent(MotionEvent event) {
 
        int eventaction = event.getAction();
 
        switch (eventaction) {
 
        case MotionEvent.ACTION_DOWN:
 
            Toast.makeText(this, "ВНИЗ "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
 
            renderer.setSize(40);
            
            break;
 }
B MainRenderer

Java
1
2
3
4
5
6
7
public class MainRenderer implements Renderer {
private int playerSize = 0;
...
public void setSize(int size){
playerSize*= size;
}
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 11:23
Привет! Вот еще темы с ответами:

Класс: Как получить значение нестатичной переменной из класса One в классе Two? - Программирование Android
Java.Есть два класса One и Two. В классе One есть не статичная переменная t. Как получить значение t в классе Two? За готовый код буду...

Как изменить переменную в другом Activity? - Программирование Android
Как изменить переменную в другом Activity?

Защитить переменную класса от записи - Программирование Android
Имеется класс: public static class MyClass { int my_field; public void setMyField(int value) { my_field = value; ...

Изменить пола одного класса методами другого класса так, чтобы изменения сохранились в первом классе - C#
Есть простая форма с текстбоксом и тремя кнопками. Нужно следующее: Нажимаем на кнопку 1, записываем значение из текстбокса в переменную....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru