アンドロイド版のデータの取り扱い方をやります。
説明書によるとデータは、音楽ファイルは assetsフォルダに、その他は data.dpm(データファイル)を使うとあるのですが、現在の所データファイルはあんまり機能しないし(HSP3.4の場合、3.5βなら使える)、とりあえずここではデータの取り扱い説明として、全部 assetsフォルダに放り込む、という手法を使います。
データパックの使い方は次章を参照して下さい。
これの問題は、説明書によると「assetsフォルダのリソースのサイズ・個数に制限があるため、1MBを越える大きなファイルを多数使用する場合は、data.dpmのデータフォルダを使用してください」という事なので、大きなデータを使うのには制限があるのかも知れません。
一応今の所、自分のカードゲームのような、中規模のものでは問題は出てません(全部で 30MBくらい。音データ以外で 1MBを超えるデータは 2つくらい)
それでは、画像と音楽と配列変数のデータをテストします。
ファイルは .pngと .mp3と .datです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include "hsp3dish.as" celload "test.png",1 ; 画像の読み込み mmload "oukoku.mp3",1 ; 音楽の読み込み dim data,3,3 bload "data.dat",data ; 配列データの読み込み redraw 0 color 1,1,1 : boxf : color 255,255,255 celput 1 ; 画像書く mmplay 1 ; 音楽鳴らす repeat 3 : y=cnt ; 配列データ書く repeat 3 : x=cnt pos x*20+10,y*20+150 : mes data(x,y) loop loop redraw 1 |
assetsフォルダ内のデータもパスの指定は要りません。
そのまま celload “test.png”と書けばOKです。
それから bsave、bloadも(たぶん)assetsフォルダ内(実機内の)に、パスの指定無しで普通にされます。
こんな感じになります
音楽は鳴ってます(笑)
これを Andoroid版でビルドするには、まずプロジェクトファイルを作って
作成されたプロジェクトファイル内の assetsフォルダにデータを入れます
プログラムを指定したら、ビルドしてみましょう
できたら実機を接続して転送します
転送されたアプリを実行します
音楽もちゃんと鳴ってます
表示の設定を何もしてないので、実機の解像度(720 × 1280)になってます。
解像度を変えてみましょう。
HSP3.4の場合。
マニュアル : 画面サイズのスケーリングについて
プロジェクトファイルの jniフォルダにある、main.cファイルを開きます
画像はテキストエディタの Meryで開いてます
この部分で設定します
設定を有効にするには、コメントアウトの「//」を消します
解像度は実機の半分の(360 × 640)にしてます。
scaleは表示倍率ですから、特にいじらなくて良いでしょう。
autoscaleは 0の時 viewの解像度に合わせて全画面表示します。
main.cファイルを上書き保存したら、ビルドして転送し、実行してみましょう。
できました、表示が2倍(解像度が半分)になってます
3.5βの場合。
hspフォルダ → sample → hsp3dish → hsp3dish.iniファイルをコピーして、プロジェクトファイルのhspフォルダに貼り付けます
開いて編集したら上書きします
設定内容は同じです
3.5βマニュアルにも書いてあります(記述が3.4と違う)
autoscale 0の時 wx、wyの解像度に合わせて全画面表示します。
同じく、ビルド、転送して実行してみます
ファイル名の注意
大文字と小文字の扱いに注意が要ります。
プログラムの拡張子を大文字にしてみます。
celload “test.PNG“,1
ファイル名の方は小文字のままです。
ファイル名 → test.png
一度クリーンボタンを押してビルドファイルをクリア(消去)してから、再度ビルドします(2回目なので。しなくてもできるけど一応)。
エラーの内容を確認するために Logcatを押してモニターを開いておきます。
ビルドして転送し、実行します。
自分の所の実機では、立ち上がらずにすぐに閉じられました。
モニターを見てみます
Error 13、Picture file missing(んな画像ファイルはみつからんよ)と出てますね。
HSPのエラー番号の意味と対処 HSPミニ講座さんのページ
拡張子で無くてファイル名ならどうだろう?
ソース → celload “TEST.png”,1
ファイル名 → test.png
やってみたら同じ Error 13でした。
と言う事で Android版の場合、ソースとファイル名は大文字小文字までキッチリ合わせる必要があるようです。
次に拡張子に大文字は使えるのでしょうか?
ソースとファイル名の拡張子をそれぞれ大文字にしてみます。
test.PNG
転送して実行してみたら、特にエラーは出ませんけど、画面は真っ黒(読み込みはされるが表示はされない?)で、なぜか一度戻るボタンを押してからもう一度立ち上げると表示されているという謎仕様でした。
原因が分かりました。
pngに比べて PNGは読み込みが遅いという可能性があります。
repeatで何回も表示するようにしたら 2回目からは表示されます。
なぜ遅いのかは全く分かりませんが PNG拡張子が使えないという訳では無いようです。
拡張子では無くて、ファイル名ならどうでしょう?
TEST.png
こっちは問題無いようです
という訳で一応、大文字でも小文字でも構わないみたいです。
オマケでファイル名に全角を使うとどうなのでしょう。
そもそもコンパイルが通りませんでした
ビルドが失敗した時は BUILD FAILEDとでます。
たぶん FAILEDと表示されたら、どんなものでも失敗のはずです。
Invalid filenameとか書かれてますから、そのファイルネームは見えなかったとか何とか言ってるんだと思います。
そんな訳なのでデータファイル名は、半角英数字で、ファイル名とソースの指定名を大文字小文字までキッチリ合わせる、という事です。