Androidアプリ開発したい!

IT屋がGalaxySを手に入れてからAndroidに興味が湧き、いろいろと開発したりしてます。 GalaxyNexusがメイン機となり、ようやく普及し始めたAndroid4.0への関心が高いです。 仕事では、iPhone向けとかのソシャゲ作ってます。

AndEngineのScene上でAndroid標準のToastを表示したいとき

あけましておめでとうございます。
まさか新年一発目の更新をするとは思ってもいませんでした。
普通に開発しててブログをアップして年越してることに気がついて追記しました(笑)

おそらく、ぐぐってちらっと寄る人が多く、
定期的に見てる人はほとんどいないと思いますが、
今年もよろしくお願いいたしますm(_ _)m

■Toastを表示したいとき

普通にgetBaseActivityをContextに呼べばいいのでは?と思ってやってみると見事にエラーで落ちました。
どうやらUIスレッド上でないとToastは呼べないみたいです(当たり前か!w)

というわけで、以下のようになります。

剣を振った時にトースト表示してみました。

device-2013-01-01-131339.png

■まとめ
 
AndEngineは、OpenGLベースで良い感じのゲームエンジンだと思います。
ゲームで必要な機能はほとんど実装できそうです。

あと、Android自体のActivityとかは維持しているので、
結構使い勝手はいいと思います。
(layout.xmlとか使えるのでWebViewとかも簡単におけるし!)

しばらくAndEngineで色々やってみようと思います。
 

AndEngineのメモ

AndEngineでよく使うクラスとか紹介しようかと思います。
というかチラシの裏です。

### リソース開放について
- リソースの開放はメモリ不足を回避するために重要
     はじめに必ずリソース開放する。
システムによるGCが検知できないことがあり、その場合に何のエラーも出ずリソースの読み込みに失敗することがあるため。

- detachChildrenとdetachSelfを同じタイミング
 呼ぶとき必ず別スレッドで行う必要がある。
detach しただけれはタッチ可能エリアが消えずに残ってしまうので、あわせて登録を外す必要がある。

### AnimatedSprite
- 第一引数のみで、1コマの再生時間を指定


- コマの時間、最初と最後のコマを指定
    引数1:1コマの時間
    引数2:開始のコマ
    引数3:終了のコマ
    引数4:true = 繰り返し / false = 1回だけ再生

- コマを配列で指定 
     引数1:各コマの時間
     引数2:再生するコマ
     引数3:true = 繰り返し / false = 1回だけ再生

### SpriteのZ座標(zIndex)を変更したい時
Spriteを読み込んだ順番で表示順が決まってしまうが、
setZIndexで読み込み順番とは別に表示順番を指定できる。
その際は、必ず表示するSceneで「sortChildren();」を呼び出さないと反映されないので注意。

### registerEntityModifierの使い方
- FadeOutModifierクラス
     対象Spriteの透過を徐々に下げるアクション。
     引数に渡した定数をかけて、徐々に透明になっていく

 (例)500ミリ秒かけて徐々に透明になる。

- DelayModifierクラス
     対象Spriteをただ遅延させるアクション。
     アニメーションとアニメーションの間に待ち時間を発生させたり出来る。

 (例)500ミリ秒待つ。

- SequenceEntityModifierクラス
     複数のModifierを順番に実行させることができる。

 (例) 500ミリ秒待ってから500ミリ秒をかけて徐々に透明になる。

- MoveModifierクラス
     指定のSpriteのx座標とy座標を徐々に移動させる。

 (例)対象のSpriteを1000ミリ秒かけてX座標だけ画面サイズ分移動する
結構色々応用が効く感じなので、
まだまだよく使いそうなのあがれば紹介できればと思います。

しかし、Timer使いすぎ?でなのか分からないけど
そろそろ動きがカクカクするときがあるので、性能対策を考えないといけない・・・



Android Projectをeclipse上でコピーして別Projectとして開発する

今回は、既存のAndroidプロジェクトをコピーして新しいプロジェクトを作成します。
共通機能とか残して新しいアプリ作りたいときとかやりますよね。

もちろん、パッケージ名等も変更するので、
端末にインストールしても別々のアプリとして認識されます。


ベースとなるプロジェクトがEclipseにいなければ、インポートとかで楽にいけるのかな?
まあ、とりあえず今回は、eclipseで作業します。


### 元になるプロジェクトを普通にコピー&ペーストします。Ctrl+C&Ctrl+vでも良いです

スクリーンショット 2012-12-30 12.19.34.png

貼り付けます。このときプロジェクト名を指定してください

スクリーンショット 2012-12-30 12.19.48.png

ScrollQuestと名付けました。横スクロールのゲームを作る予定なので。。。

### Android ToolsでPackage名を変更します

プロジェクト右クリック
     ー> Android Tools
          ー> Rename Application Package


スクリーンショット 2012-12-30 12.21.06.png


プロジェクト名と合わせてgamebaseをscrollquestに変更します

スクリーンショット 2012-12-30 12.21.33.png


### Android ToolsでRenameできないものを一括置換します

Search
     ー> File
          ー> 検索条件に「前のパッケージ名」でReplaceボタンを押す

ソースコード上のパッケージ名とかが検索でヒットします

スクリーンショット 2012-12-30 12.25.00.png

一括置換します

スクリーンショット 2012-12-30 12.25.45.png

めっちゃエラーでてますので、プロジェクト内のパッケージ名も手作業で直します
スクリーンショット 2012-12-30 12.27.44.png

エラーが消えました
スクリーンショット 2012-12-30 12.28.18.png

### コピーした時にgit情報もコピーしちゃっているので切断して再構築します

スクリーンショット 2012-12-30 12.22.19.png


Share Projectからgitを選んで、gitでソース管理します。

スクリーンショット 2012-12-30 12.22.41.png


### 起動してみます

トップ画面で背景画像のみ表示してます。一発で動きました。

画像のチョイスに関しては気にしないでください。
特に意味はありませんw

device-2012-12-30-124946.png


もっと楽な方法があるのかな?
まあ、エラー出るのでしっかりエラーを対応していけばそんなに苦ではありません。
慣れれば5分もかからない作業ですし!

以上。
持ってる端末
・Galaxy S root化済    (2.3.6)
・Galaxy Nexus          (4.1.1)
・GALAPAGOS A01SH (4.0.4)
・ONDA Vi10              (4.0.3) 
・iPod Touch           (iOS 6.0)
記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

  • ライブドアブログ