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

onTouchEvent в потоке - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Hello World! http://www.cyberforum.ru/android-dev/thread449938.html
Привет! Такая вот штука…попытался запустить свой первый проект HelloWorld. Всё сделал точно по инструкции…сверялся с двумя букварями..Запуск не получается…Пишет что нужно исправить ошибки проекта…Я просто в тупике….сорри. Да…где можно посмотреть лог файл или код ошибки? Вот скриншот...
Программирование Android Ошибка в eclipse помогите пожалуйсто постоянно выскакивают ошибки btnCancel (btnOk;tvOut;main) cannot be resolved or is not a field public class MainActivity extends Activity implements OnClickListener { TextView tvOut; Button btnOk; Button btnCancel; /** Called when the activity is first created. */ @Override http://www.cyberforum.ru/android-dev/thread449228.html
Странная арифметика Java Программирование Android
Здравствуйте. Кто подскажет в чем дело, выполняю обычный пример (-3.4)+3, а ответ получаю совершенно необычный -0.4000001. С чем это может быть связано? Используемые типы данных float.
Eclipse не хочет компилировать приложение Программирование Android
Решил попытаться написать приложение под Андроид, eclipse не хочет компилировать подскажите плиз, что не так.
Программирование Android Генератор кубиков http://www.cyberforum.ru/android-dev/thread448185.html
Всем привет) Помогите новичку... Познания нулевые и вот решил попробовать сделать что-то похожее на игральные кости (кубики). Кодить пытаюсь в Eclipse (настроено все под Андроид, и виртуальные машины стоят) Ну это все преамбула... А теперь так сказать "амбула" ) Наваял такой вот код, он выводит на экран две простых кнопки на которых цифрами выводятся значения кубика. Далее хотел на обе...
Программирование Android ListView + Adapter Товарищи, помогите советом. Создал очень простую прогу: public class JustTestActivity extends Activity { String s = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; ListView lv; @Override подробнее

Показать сообщение отдельно
nnnikotinnn995
4 / 4 / 0
Регистрация: 07.07.2011
Сообщений: 293

onTouchEvent в потоке - Программирование Android

21.02.2012, 12:02. Просмотров 4298. Ответов 22
Метки (Все метки)

Здравствуйте. Задача изменить с помощью onTouchEvent(MotionEvent event) переменную public int b и отрисовать графику с новым параметром в цикле – без invalidate();.
Переменная public int b наверняка меняется но метод
Java
1
2
3
4
5
 public void onDraw(Canvas canvas) 
       {
           x=x+b;
        canvas.drawBitmap(bmp, x, y, null);
       }
не видит этого изменения.
Вот основные классы
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
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.MotionEvent;
 
 public class Sprite {
   
     private GameView gameView;
    
    private Bitmap bmp;
   public int x = 0;
    private int y = -155;
     public int b=1;
  
    /**Ширина*/
    private int width;
    
    /**Высота*/
    private int height;
    public boolean onTouchEvent(MotionEvent event)
    {
        Float X=(Float)event.getX();
        Float Y=(Float)event.getY();
        int Action=event.getAction();
        
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
           b=5; 
                }
        if (event.getAction() == MotionEvent.ACTION_UP)
        {
             b=55;
                }
                if (event.getAction() == MotionEvent.ACTION_MOVE)
                {
                     
                        }
        return true;
    }      
       /**Конструктор*/
    public Sprite(GameView gameView, Bitmap bmp) 
    {
          this.gameView = gameView;
          this.bmp = bmp;
          this.width = bmp.getWidth(); 
          this.height = bmp.getHeight(); 
    }
 
       public void onDraw(Canvas canvas) 
       {
           x=x+b;
        canvas.drawBitmap(bmp, x, y, null);
       }
}
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
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
 public class GameView extends SurfaceView {
   
   
    /**Загружаем спрайт*/
    private Bitmap bmp;
        
    /**Поле рисования*/
    private SurfaceHolder holder;
    
    /**объект класса GameView*/
    private GameManager gameLoopThread;
    
    /**Объект класса Sprite*/
    private Sprite sprite;
    
   
    /**Конструктор*/
    public GameView(Context context) 
    {
          super(context);
          gameLoopThread = new GameManager(this);
          holder = getHolder();
          
          /*Рисуем все наши объекты и все все все*/
          holder.addCallback(new SurfaceHolder.Callback() 
          {
                        /*** Уничтожение области рисования */
                 public void surfaceDestroyed(SurfaceHolder holder) 
                 {
                        boolean retry = true;
                        gameLoopThread.setRunning(false);
                        while (retry) 
                        {
                               try 
                               {
                                     gameLoopThread.join();
                                     retry = false;
                               } catch (InterruptedException e) 
                               {
                               }
                        }
                 }
 
                 /** Создание области рисования */
                 public void surfaceCreated(SurfaceHolder holder) 
                 {
                        gameLoopThread.setRunning(true);
                        gameLoopThread.start();
                 }
 
                 /** Изменение области рисования */
                 public void surfaceChanged(SurfaceHolder holder, int format,
                               int width, int height) 
                 {
                 }
          });
          bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bad1);
          sprite = new Sprite(this,bmp);
          
    }
 
    /**Функция рисующая все спрайты и фон*/
    protected void onDraw(Canvas canvas) 
    {
          canvas.drawColor(Color.BLACK);
          sprite.onDraw(canvas);
         
    }
   
          }
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
import android.graphics.Canvas;
 
public class GameManager extends Thread
{
       /**Наша скорость в мс = 10*/
       static final long FPS = 500;
      
       /**Объект класса GameView*/
       private GameView view; 
 
       /**Задаем состояние потока*/
       private boolean running = false;
      
       /**Конструктор класса*/
       public GameManager(GameView view) 
       {
             this.view = view;
       }
 
        /**Задание состояния потока*/
       public void setRunning(boolean run) 
       {
             running = run;
       }
 
       /** Действия, выполняемые в потоке */
 
       @Override
       public void run() 
       {
             long ticksPS = 1000 / FPS;
             long startTime;
             long sleepTime;
             while (running) {
                    Canvas c = null;
                    startTime = System.currentTimeMillis();
                    try {
                           c = view.getHolder().lockCanvas();
                           synchronized (view.getHolder()) {
                                  view.onDraw(c);
                           }
                    } finally {
                           if (c != null) {
                                  view.getHolder().unlockCanvasAndPost(c);
                           }
                    }
                    sleepTime = ticksPS-(System.currentTimeMillis() - startTime);
                    try {
                           if (sleepTime > 0)
                                  sleep(sleepTime);
                           else
                                  sleep(5);
                    } catch (Exception e) {}
             }
       }
}
Подскажите пожалуйста в чем тут причина?
Вложения
Тип файла: zip Tectnzapasn5.zip (3.12 Мб, 14 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru