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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Q&A

解決済

1回答

1380閲覧

SurfaceView 描画し直したいとき

masaakitsuyoshi

総合スコア102

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

0グッド

0クリップ

投稿2016/05/24 05:44

編集2016/05/24 09:52

SurfaceViewを継承、RunnableをimplementsしたCustomViewを作成、canvasで描画しています。

描画された画面をタップしたとき(onTouch)、もう一度、描画し直すようにしたいのですが、どのようにすればいいでしょうか?

具体的には下記に記しました。

Java

1public void gameStart(){ 2 3canvasの背景を描画 4 5ボールを描画 6 7ブロックを描画 8 9バーを描画 10 11}

とし、

CustomViewの中のrun()のなかで

Java

1run(){ 2gameStart(); 3 4}

としています。

そして、gameStart();が終わった後、画面をタップ( onTouch)したら、また最初の

canvasの背景を描画

ボールを描画

ブロックを描画

バーを描画


と続いて欲しいです。

onTouchのACTION_DOWNで
gameStart();を呼んだのですが、gameStart();が実行されませんでした。
(エラーは出ていない)

どのようにしたら良いでしょうか?

追記
onTouchの Action_DOWnに下記コード記載しています。

ボールの生死フラグ isLiveがfalse
かつ、タッチの範囲がtouchX >= 270 && touchX <= 450 && touchY >= 920 && touchY <= 1070

ifの中の処理 gameStart()にブレイクポイント置いてますが、ステップオーバーすると、gameStart()が飛ばされて、
onTouchのreturn trueに移行してしまっています。

if条件文をtouchX >= 270 && touchX <= 450 && touchY >= 920 && touchY <= 1070
のみにしても反映されない&メソッドが飛ばされる。

Log.dの処理も飛ばされます。。。

Java

1 2 if(!game.ball.isLive && touchX >= 270 && touchX <= 450 && touchY >= 920 && touchY <= 1070){//Restartテキストの範囲の概算 3 4 game.gameStart(canvas); 5 Log.d("ball","ball.isLive"+game.ball.isLive); 6 7 8 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

gameStartが実行されていないのはどうやって確認しましたか?

gameStartメソッドの先頭にブレークポイントを設置しステップ実行を行ってください。

投稿2016/05/24 06:26

yona

総合スコア18155

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

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

masaakitsuyoshi

2016/05/24 09:21

実機で確認しました。 アプリ起動ー画面タップonTouchー反応しない ステップ試してみます
yona

2016/05/24 09:29

反応しない(見た目に変化がない)からと言って実行されていないとは限りません。
masaakitsuyoshi

2016/05/24 09:53

追記しましたが、なぜかifで実行する中身が飛ばされてしまっています。
yona

2016/05/24 10:00

なぜかと思うだけで終わってはダメですよ。何が起きているか、想定と何が異なるかを把握すべきです。 実際にtouchXとtouchYの値をログに出力してください。
masaakitsuyoshi

2016/05/26 04:34

コードはなにも変更していませんが、何度か再起動を繰り返していたら反映されました。 以前から再起動しないとコードが反映されない状態が続いていて、今回もそれが原因?かもしれません。
yona

2016/05/26 05:12

インスタント実行が悪さをしているのかもしれないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問