スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AndEngine SDカード上、Web上の画像でSpriteを作成する

AndEngineを利用した初ゲームアプリが完成しました。


ゲーム「バグズ・ウォーズ」
icon2.png


今までScriptの「enchant.js」を利用して作っていたのだが、FPSなどの問題で開発途中でAndEngineで作り直すことにした。
ネット上ではAndroidでのゲームアプリエンジンの本命だ、と言われているが、私もそうだと思う。

ちなみに参考にしたのがこの参考書。

他のAndEngineの参考書は見たことないのだが、これ1冊こなせばAndEngineの開発は一通りこなせると思う。


■assetsフォルダ以外からSprite、AnimatedSpriteを作成するには??



画像を表示するにはSpriteを利用するのだが、
この参考書だからなのかわからないが、基本的にもととなる画像はプロジェクトのassetsフォルダにある画像を利用しているのだ。

画像を扱うためのクラス内で、画像を読み込むためのパスルート(?)がデフォルトassetsフォルダが固定されているため、画像を読み込むときに指定するファイルパスはassetsフォルダからの相対パスを指定している。

しかし、今回このassetsフォルダ以外から画像を読み込む必要が出てきたからさーたいへん。

■拡張ファイルの利用


今回作成したバグズ・ウォーズは大量の画像ファイルを利用するため、APKが50MBを超えてしまった。
そのため、画像ファイルを拡張ファイルとして提供することにしたのだが、拡張ファイルを利用してしまったため、画像ファイルがassetsフォルダ以外に存在する状況となってしまった。

考えたのだが、このSDカード内に作成された画像ファイルを、アプリ起動時にassetsフォルダにロードすればいけるんじゃね??と思ったのだが、そもそもassetsフォルダはAPK内部に存在しており、assetsフォルダに後で追加するということ自体が不可能だということが分かった。



ということで、以下がSDカード内の画像をSpriteに読み込む方法。

■ソース

String fileName = "ファイルパス";
TextureRegion imageFromServer = null;
ITexture mTexture = new BitmapTexture(
gameActivity.getEngine().getTextureManager(),
new IInputStreamOpener() {
@Override
public InputStream open() throws IOException {
InputStream input = new FileInputStream(fileName2);
BufferedInputStream in = new BufferedInputStream(input);
return in;
}
});
mTexture.load();
textureList.add(mTexture);
imageFromServer = TextureRegionFactory.extractFromTexture(mTexture);

Sprite sp = new Sprite(0, 0, imageFromServer, gameActivity.getEngine().getVertexBufferObjectManager());


■ちなみにAnimatedSpriteは

String fileName2 = ""ファイルパス;
int column = 3;
int row = 3;
TiledTextureRegion imageFromServer=null;
ITexture mTexture = new BitmapTexture(
gameActivity.getEngine().getTextureManager(),
new IInputStreamOpener() {
@Override
public InputStream open() throws IOException {
InputStream input = new FileInputStream(fileName2);
BufferedInputStream in = new BufferedInputStream(input);
return in;
}
});
mTexture.load();
textureList.add(mTexture);
imageFromServer = TextureRegionFactory.extractTiledFromTexture(mTexture,column, row);
// AnimatedSpriteを生成
AnimatedSprite sp = new AnimatedSprite(0, 0, imageFromServer,gameActivity.getVertexBufferObjectManager());



■ちなみにWeb上の画像を読み込むには
InputStreamを以下に変更すればよい

//画像URL
URL url = new URL("http://aaaaaaaaaaaaa");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();


これでassetsフォルダ以外の画像データを扱うことができる。
スポンサーサイト

コメントの投稿

非公開コメント

おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。