2014-04-28 3 views
0

Я пытаюсь установить звук для касания для своей игры, но на финальной строке MediaPlayer появляется сообщение mp = MediaPlayer.create (это, R.raw.move); какие-либо предложения? ThxКак использовать android mediaplayer на motionevent

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    int x_aux = (int) (event.getX()/(this.getWidth()/x)); 
    int y_aux = (int) (event.getY()/(this.getHeight()/y)); 
    drawimage(x_aux, y_aux); 
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.move); 
    setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v) { 
      mp.start(); 
     } 
    }); 
    return super.onTouchEvent(event); 
} 
+0

Является ли ваш слушатель прикосновения анонимным (встроенным) экземпляром? Если это так, то 'this' будет ссылаться на слушателя, который не является допустимым' Context'. Чтобы исправить это, вы можете вместо этого использовать «MyActivity.this» (obvioulsy замените MyActivity на имя вашей фактической «Деятельности». – Squonk

+0

Собственно, что, если я просто изменил ее на final MediaPlayer mp = MediaPlayer.create (это, R.raw. move) mp.start(); Im new для android, и я пытаюсь изменить чужой код здесь, чтобы добавить некоторые функции. – iaeuia

+0

Не могли бы вы взглянуть на полный класс? – iaeuia

ответ

0

Метод MediaPlayercreate(...) требует Context в качестве первого параметра. Проблема, вероятно, в том, что ваш класс игры - это View (который не распространяется Context), поэтому с использованием this для первого параметра работать не будет.

Вы можете попытаться сохранить ссылку на Context, которая передается в конструктор. Под частным полем private Paint caneta; добавьте один для Context. Пример ...

public class Game extends View { 

    private Cell[][] singlesquare = null; 
    int x = 3; 
    int y = 3; 
    private int l; 
    private int a; 
    private boolean whatdrawn = false; 
    private int playerwin = 3; 
    private Paint caneta; 
    private Context context; // ADD THIS LINE 

Затем в конструкторе сохранить ссылку на Context прошел в. Пример ...

public Game(Context context) { 
    super(context); 
    this.context = context; // ADD THIS LINE 

Тогда при создании Mediaplayer использования ...

final MediaPlayer mp = MediaPlayer.create(context, R.raw.move); 
+0

Спасибо, что сработал !!! Еще одна функция, которую я хочу добавить в игру I создал меню, и я хочу иметь параметр перезапуска. Создать метод в основной деятельности или мне нужен метод четкой доски в классе игры – iaeuia

+0

Nevermind Я смог сделать это в этом учебнике http://stackoverflow.com/a/22213380/3551857 – iaeuia

+0

Это Игра Tictactoe 2 игрока, но я хочу, чтобы она не могла отменить ход, может кто-нибудь предложить, как ее реализовать. Теперь, если я положу круг на плитку, его можно отменить с помощью креста, когда я снова нажму на ту же плитку. – iaeuia

Смежные вопросы