質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1605閲覧

onTouchEvent()のエラーの原因を教えて下さい

peanutsguys

総合スコア1

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/08/01 12:35

onTouchEventのエラー原因がわかりません。

中学生でもわかるandroidアプリ開発講座(改定2版)の内容通りにゲームアプリを作成していますが、onTouchEventメソッドでコンパイルエラーが出てしまいます。
何故コンパイルエラーになるのか教えて下さい。

発生している問題・エラーメッセージ

// タッチイベント時に実行されるメソッド public boolean onTouchEvent(MotionEvent me){              //(エラー内容)Variable 'onTouchEvent' is never used // タッチされたら if(me.getAction() == MotionEvent.ACTION_DOWN){ // プレイヤーの上昇値を設定 playerVY = -20; } // 呼び出し元に戻る return true; //(エラー内容)Cannot return a value from a method with void result type

該当のソースコード

package com.example.sample01; import android.app.slice.SliceItem; import android.view.View; import android.content.Context; import android.graphics.Canvas; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint; import android.view.MotionEvent; public class GameView extends View{ private Bitmap[] player=new Bitmap[5]; private Bitmap bgImage; private Bitmap cloud; private int frameIndex = 0; private int playerX; private int playerY; private int playerVY; private int canvasCX; private int canvasCY; private int cloudX; private int cloudY; private int cloudVX = -2; private int energyX; private int energyY; private int energyVX = -20; Paint energyPaint = new Paint(); public GameView(Context context) { super(context); Resources res = this.getContext().getResources(); player[0] = BitmapFactory.decodeResource(res, R.drawable.chopper1); player[1] = BitmapFactory.decodeResource(res, R.drawable.chopper2); player[2] = BitmapFactory.decodeResource(res, R.drawable.chopper3); player[3] = BitmapFactory.decodeResource(res, R.drawable.chopper4); player[4] = BitmapFactory.decodeResource(res, R.drawable.chopper5); bgImage = BitmapFactory.decodeResource(res,R.drawable.bg); cloud = BitmapFactory.decodeResource(res,R.drawable.cloud1); energyPaint.setColor(Color.RED); energyPaint.setAntiAlias(true); } public void onDraw(Canvas canvas){ canvasCX = canvas.getWidth()/2; canvasCY = canvas.getHeight()/2; bgImage = Bitmap.createScaledBitmap(bgImage,canvas.getWidth()*2,canvas.getHeight(),true); playScene(canvas); } public void playScene(Canvas canvas){ canvas.drawBitmap(bgImage,0,0,null); playerX = canvasCX - player[0].getWidth()/2; //playerY = canvasCY - player[0].getHeight()/2; playerY += playerVY; if(playerY<0) playerY=0; playerVY += 4; if(playerY>canvasCY)playerY = canvasCY; if(frameIndex>4) frameIndex = 0; canvas.drawBitmap(player[frameIndex++],playerX,playerY,null); cloudX += cloudVX; if(cloudX< -cloud.getWidth()){ cloudX =canvas.getWidth(); cloudY =(int)Math.floor(Math.random()*canvasCY); } canvas.drawBitmap(cloud,cloudX,cloudY,null); energyX += energyVX; if(energyX<0){ energyX = canvas.getWidth()+20; energyY = (int)Math.floor(Math.random()*canvasCY); } canvas.drawCircle(energyX,energyY,10,energyPaint); // 次の10行を追加する // タッチイベント時に実行されるメソッド public boolean onTouchEvent(MotionEvent me){ // タッチされたら if(me.getAction() == MotionEvent.ACTION_DOWN){ // プレイヤーの上昇値を設定 playerVY = -20; } // 呼び出し元に戻る return true; } } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Android8.1(oreo)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/08/01 12:52

エラーメッセージはいらぬ翻訳省略せずにそのままコピペで提示しましょう
guest

回答1

0

ベストアンサー

public boolean onTouchEvent(MotionEvent me){

関数の途中に書かれてますよ

投稿2020/08/01 13:05

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peanutsguys

2020/08/01 13:54

ご回答ありがとうございます。public boolean onTouchEvent(MotionEvent me){ の場所が間違っているということでしょうか。
y_waiwai

2020/08/01 14:16

そういうことです。 関数の中に関数はかけません
peanutsguys

2020/08/01 15:59

ありがとうございます。playSceneメソッドの外に出したらエラーが出ませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問