ワニの技術メモ

エラーが出たとき、わからない技術にぶつかった時の技術メモ

108日目 プログラムは動くのに画像が壊れる理由を探る

 readBitmapの関数内でブレークさせてみました

この方法は前回のエントリーで教えていただいた方法です。ブレークさせてチェックするやり方がまだ慣れないのでこのやり方で合っているのか??と不安ですが、いろいろな発見がありました。

結論からいうと、、、

正しい画像の値が設定されているようです。(というのも、サンプル画像でも同じ場所でブレークさせても同じ値が入力されていることが確認できたので)

残念。これでミスが発見できれば楽になると思ったのに見つかりませんでした。

サンプルプロジェクなしで、プログラムが正しいかどうかを判断させることなど初心者の私にはまだまだハードルが高く難しいですが、すごーーーーーく勉強になりました。この問題が解決できたらデバックについてまとめてしっかり復習してみたいです。 

hipopocroco.hatenablog.com

新たなに生まれる疑問 

こんなにコードを見なおしてもErrorが発見できない。

しかも、Genymotion上でプログラムは動いているのです。背景画像とスタートボタンの画像が取得できていませんが。

今回、作っているプロジェクトは、途中から、サンプル画像を拝借し何度か入れ替えています。その時に何かおかしくなってしまったのではないか??という疑問が生まれてきました。

というのも、今日画像を移動させたて戻したらManifest.xmlファイルが壊滅的なErrorになりました。

以前HPを作ったときに、保存名や保存場所が異なるだけでリンクがつながらなかったことが思い出されます。

保存したファイルの名前が違うような単純なものではないにしても、画像をコピーして移動させた時、一見フォルダ名や画像そのものに問題はないように見えても複雑に変化してたりして、、、と思うようになってきました。

  1. 新しいプロジェクトをつくる
  2. 画像を保存する
  3. コードを書く

という手順に意味がある(はず?)なのに、それを知らずに途中で画像を動かしているためうまくつながっていないような気がしてなりません。

そこで、最初からもう一度全部作りなおすことにしました。

2回めの作り直し。

「次の手がある」って思えるだけでなんだが頑張れそうな気がします。締め切りがあったら諦めちゃうかもしれませんが勉強には締め切りはない!!

 

 

 

 

107日目 今日も解決できず。仕方がないので、丁寧にコードを日本語に訳してみる

簡単なパズルゲームをAndroidStudioで作っています。サンプルコードを写経して自分なりにアレンジを加えるはずがおかしい。プログラムは動くのですが、背景画像やスタートボタンが取得できない。

今日行った検証

①resフォルダの中身を確認する

  • サンプルコードのresフォルダと見比べる
  • 中身を一度取り出してサンプルコードの画像を移し替えてみる

でも、、、、解決できず。

 

②順番にデバックする

サンプルプロジェクトと、自分のプロジェクトを並べてデバックして、エミュレーターを動かしながら実際の画面がどのコードで異なるか探していきます。でも、結局異なるポイントはやっぱり、

g.drawBiitmap(bmp[0] , 0,  0);

コードでの違いは見つけられない。

 

③1行ずつコードを日本語に変えて訳してみる

今まで買った本、GoogleをつかってJavaのサンプルコードを日本語に変えてみることにしました。何回もコードを見なおしてもミスがみつけられないので。

大変ですが、JAVAの勉強のために、もともとやりたかったことなのでまあいいかーと思いながら始めました。英語の長文読解みたいなものです。すると、ここ分からないな~ということがたくさん浮かびあがります。今日は3分の1くらいまでおおまかな、日本語訳が終わりました。明日続きをやってみます。

 

でも、やっぱりコードの問題だけでなくて、もっと本質的なところで間違えているような気がする。。。もし、これが解決できたら相当嬉しいです。

気分転換について

深夜、分からないプログラミングの勉強していると、眠気が襲ってきます。そこで、最近のBillboardChartをYouTubeで聞いて気分を紛らわしています。久しぶりに自分の中でテンションの上がる曲が見つかったので載せちゃいます。プログラミングに疲れたらどうぞ。

▼80、90年代に洋楽に親しんだ方には懐かしいテイスト満載の曲じゃないかな。


WALK THE MOON - Shut Up and Dance - YouTube

▼原始的なアニメーションの技術を組み合わせて作る”映像が”カッコイイ!!久しぶりにPVでワクワクしました。


Skrillex and Diplo - "Where Are Ü Now" with ...

 

106日目 今日も解決できない

簡単なパズルゲームをAndroidStudioを使って作っています。

プログラムは動くのですが、背景画像が取得できていません。

今日行った検証方法

Downloadしたサンプルコードと同じ場所を順番にデバックして、違いをチェックしています。そうしているうちにやっと一つ気づいたのが

g.drawBitmap(bmp[0], 0, 0); 

以前もこのErrorに悩まされていましたが、意味がわかったような気がします。

このbmp[0]の0って画像の名前のこと???

すると、全部つながります。0の画像が取得できていません。

今日の終わりに

明日は何からチェックすればいいのか。。。。

もう一回、画像の取得について勉強だ!

105日目 背景画像が取得できない

無事プログラムは動いています。

でも画像が壊れています。

背景画像やスタートボタン用の画像が取得できていません。

書かれているJavaを理解でいていないままサンプルプロジェクトに挑戦している”つけ”が回ってきたようです。

「まずはアプリを1個リリースするぞ!」

と横着してJavaの勉強をサボっていたのがいかんかった。

どうやって画像を取得しているか、わかっているつもりでわかっていなかった。

明日からの勉強方法どうしようかな~。

 

もう一回、画像を取得する方法を復習してみよう。

 

母親業は体力勝負です

夏!熱い!朝から水遊び、夜はお祭り。娘の調子がいいうちにいろんな夏のたのしいことを!!!

と日中は子どものペースで駆け抜け、夜は勉強。さすがに疲れました。

子どもと過ごすことは体力勝負!!でも、ママ友にも恵まれ、余分な人間関係に悩む必要がいまのところないので、そういう疲れがないのが救いです。

104日目 AndroidStudio ブレークポイントを使ってデバックをする(復習)

昨日、ブレークポイントについて教えていただきました。

break文と勘違いしていました。どうりで全然うまく行かないはずです。

ブレークポイント!以前写経したテキストにも載っていたはずなのに、スルーしていました。知りませんでした。

ここで使い方を確認しておきます。

ブレークポイントを使ったデバックのやり方

①ブレークしたい箇所をクリックして赤い丸印をつける

②デバックボタンをクリック するとしばらくしてエミュレーターの選択画面が浮かぶハズ。自分の使っているエミュレータを選択して実行する。

③debuggerタグの中をチェックする

f:id:hipopocroco:20150728011301p:plain

Debuggerタグ右側の矢印表示を押すと行をステップさせながらデバックできました!すごい!ありがとうございます。

エミュレーターもブレイクポイント以前まではきちんと動いていることがわかりました。これから使用頻度が高くなりそうな機能です。

デバックの仕方は分かってもまだまだ理解できない

でも、書かれている内容はまだ理解できません。なんとなく、これのこといってるのかな???くらいのレベルです。もっと勉強しなくてはいけません。

ちなみに、今回はコードの入力ミス。

getPackageName としなくてはならないのを、

getPackageCodePath と間違えていました。

そのミスをVariablesからは発見できませんでした。

難しい。。。

もし、ここに書かれている事がわかるようになれば相当楽になりそうです。

もっと精進せねば。

 

スポンサーリンク

 

 

 

103日目 NPEから抜けだして、また次のError

いろいろ試す、NullPointerException深夜の戦い。

ループ処理break;について

break文を使ってみましたが、解決できませんでした。でも、おかげでぼんやりとしか理解していなかったbreak処理について勉強できました。

まだまだ、JAVAのことよくわかっていないのでいろいろ試すヒントをいただけるだけで感謝してもしきれません。ありがとうございました。

(参考)

Java ループ処理を抜ける(break)

break文 - 処理の流れを制御 - Java入門

 

発見!NPEの原因は、、、

今日もだめだと諦めかけた時、ミスを発見!!多分これが原因???

getPakageNameとしなくてはいけないのを、

getPakageCodePathとしていました。。。。

コードを完璧に写経したと思っていたら、全然完璧ではありませんでした。

恥ずかしい。。。。

f:id:hipopocroco:20150727023303p:plain

f:id:hipopocroco:20150727023344p:plain

でも、どうして、g.drawBitmap(bmp[0], 0, 0); と、int w = bitmap.getWidth(); がErrorで指摘されたんだろう。。。確かに、Bitmap関連のコードのミスではありましたが、よく分かりません。

Genymotionで確認すると、無事絵が現れNPEも消えました。でも、、、、

新たに生まれるError

無事にプログラムが動いたと思ったら、背景や、パーツが読み込まれていなかったりずれています。もう一回いろいろ見直す必要がありそうです。夜中に作ってるから凡ミスが増えるのかな。。。それに、ミスも発見することができないのかな。。。

でも、少しでも前進してホッとしました。

それにしても、今日も夜更かし。明日娘に朝早く起こされることを思うと、、、(幸せなはずなんだけど、)辛いっ!!!

 

102日目 まだまだ続く、NPE。画像に関することが関係しているらしい。

サンプルプロジェクトを元に簡単なパズルゲームを作っています。

まずは写経して、そこから自分のやりたいように少しずつかえていこうかと思っているのですが、まず、サンプルプロジェクトが動かない。

logcatをチェックすると、Genymotionは動かず、

NullPointerException

そして、チェックしてねと指摘されるのが、Javaコードの

g.drawBitmap(bmp[0], 0, 0);     
int w = bitmap.getWidth();

Errorの波線はでていない。

 

画像を疑ってみる

現在本に載っているサンプルを写経しています。けれど、あまりにもErrorが発見できないので、付属のサンプルコードをDownloadしてチェックをすることにしました。

▼こんな感じ。

左がDownloadしたサンプルコード、右が私が作る写経中のコード

f:id:hipopocroco:20150727021046p:plain

自分で作った画像フォルダと、Downloadしたサンプル画像フォルダをいれ変えてみる。

Errorは変化なし。

ところが、

突然Downloadしたサンプルプロジェクトも動かなくなる!

そして、同じErrorが、、。

(原因)

いじっているうちにdrawable-nodbiフォルダごとごっそり移動させてしまっていた。

復元させると、、、もとどおり、Downloadしたサンプルプロジェクトが動いた。

つまり、、、

画像に何か問題があるはず!

または、

画像を操作するコードのどこかを間違えているはず??

次回、もう少し画像に関するところをチェックしてみよう!

 

↓これ、わかりやすい。

グラフィックス(6)-Bitmapの描画とMatrixの操作 - 愚鈍人

スポンサーリンク