curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

SurfaceViewを使って絵を書き動かすサンプルをコピペして動かしてみた

 

お疲れ様です。高橋です。

本日はcocos2d-xの3.3rc0を導入しようと試行錯誤したのですが、かなり難易度高い事を身を持って知ったので、明日再チャレンジです。

今日はこちらのページに書いてあったSurfaceViewを使って描画してみるサンプルを試してみようと思います。

いつものようにwebからEclipseにコピペしては、import箇所を修正する等して、Eclipseに怒られる赤や黄色を直していきます。

下の画面は上述したサイトの「さあ、これをやったら動くよ!」という佳境の部分の記載です。

android2014112402jpg

 

このサイト、初心者にとっては大変ありがたく、分かりやすいページなのですが、たまにソースコードが間違っていたり、コピペミスしている事があるので、途中で「?????」となってしまうのです。

そこは脳内での補完や、コード自体を書き換える事で対応する事が求められます。初心者を強制的にステップアップさせようというサイト作者の憎い心遣いを感じてしまいます。

8と9とでは、それぞれMainActivityとSampleSurfaceViewを直す事が書いてありますが、貼り付けてあるコードが上下同じ物です。

コードはさておき、説明している箇所では

SurfaceViewのクラスです。SurfaceHoloderを取得し、addCallback()メソッドを呼び出しコールバック先のクラス(MySurfaceViewCallback)を設定します。

との事です。

クラス図で言うと、このサイトの作者が実現した事は下のような感じ。

android2014112403jpg

SampleSurfaceViewの中でgetHolderし、holder.addCallback(SampleSurfaceHolderCallbak)って事だと思う。が、うまく動きませんでした。addCallbackでのコールバック先クラスの指定がどうしてもうまくいきませんでした。

ので、苦肉の策として、クラスの作りを下記のように変更。

android2014112404jpg

SampleSurfaceView自体にSurfaceHolder.Callbackをimplementsし、holder.addCallback(this)とやることで、動きました。

 public SampleSurfaceView(Context context) {
     super(context);
     SurfaceHolder holder = getHolder();
     holder.addCallback(this);
 }

 

そんなこんなで、最終的にはボールが跳ねるサンプルがエミュ上で動作しました。タイトルがTimerSampleなのはTimerクラスを実験してたときのプロジェクトをそのまま流用したからです。

android2014112401jpg

今回初めてCtrl+F12やCtrl+F11で画面が横になることを知りました。

 

以上、よろしくお願い致します。

 

 - アプリ開発

  関連記事

リリースしたアプリ達が累計200DLを突破!

お疲れ様です。高橋です。 2014/12/04に最初にリリースした「カナかな?」 …

寝坊検知&遅刻の言い訳提案システム #2

お疲れ様です。高橋です。 昨日作った遅刻の言い訳提案システムですが、Tweetの …

Win7(64bit)+Unity4.5.5f1で作った物をAndroidエミュで動かしてみた

お疲れ様です。高橋です。 先ほどはcocosを使ったサンプルをエミュで動かす所ま …

「カナかな?」を実機デバッグし、ログ送出機能を追加してリリースしてみた。

お疲れ様です。高橋です。 デバッグしてみた 先日リリースした、西野カナ風の歌詞を …

URL付き言い訳提案システム 稼働初日

お疲れ様です。高橋です。 本日から、よりDL数を高める施策として、提案の中にUR …

8bitサウンドを出すAndroidアプリをリリースしてみた。

お疲れ様です。高橋です。 先日の「Androidで8bitサウンドをモノフォニッ …

DLリンク付き言い訳提案システムとDL数の関係について

お疲れ様です。高橋です。 DLリンク付きの言い訳提案システムを1週間稼働させ、そ …

FreeなWindows向けDAWを使って作った音楽をwavからoggにしてAndroidアプリで鳴らしてみた。

お疲れ様です。高橋です。 先日POSTした「DAWを使って、ゲームの裏側で鳴らす …

【完全版】 Androidで広告ID(Advertising ID)を取得する方法

お疲れ様です。高橋です。 非常に長い時間掛けて他人に実機デバッグをやってもらう事 …

広告IDが取得出来なかった理由がわかってきた。かな?

お疲れ様です。高橋です。 しばらく前からめぼしい更新を停止していた「カナかな?」 …