2020年 5月 8日
ビルドと実機テストはレポート形式だったため、かなりカオス(混沌)だったと思いますので、まとめを書きます。
今回 MZKさんのコメントでの助言が、かなり的を射ていたようです。
1、画像ファイルは ANDROIDの機種依存で読み込める枚数が決まっている。
そこで、なるべく 1ファイルに複数の画像をまとめる。
N05D(ANDROID Ver4.0.4)で 140枚あまり、SO-02K(Ver9)で 170枚以上読み込み可能でした。
2、音声ファイルの読み込みは 30個までなので、BGMは 0番固定で都度読み込みにする。
SEは番号を使いまわす。
3、#deffuncの挙動が HSPと ANDROIDで違う場合がある。
ネスト(ルーチン読み出し)はなるべく深くならないようにする。
1、ビルド時の問題
1、画像や音声のファイル名とそれのソースの呼び出し記述がとにかく違う
何度も見直してもファイル数が多いと必ず名前の記述が違ったり抜けていたりするファイルがある。
きっちり全部合わせないとビルドエラーになる。
2、#deffuncの記述は必ずその呼び出しの前に置く
#deffuncの記述が、それの呼び出しの後になると HSPの実行では動きますけど、ビルドはエラーになります。
これはプログラム作成中に気をつけないといけませんね。
どうしても前に呼び出したい場合は *ラベルを #deffuncの後に置いて 2段階で呼び出しましょう。
2、実機テスト時の問題
1、#deffuncの記述は必ずその呼び出しの前に置く
なぜかビルドでは通るものがあるらしいので、これは実機で 12エラーになります。
2、関数カッコ内での複雑な処理はしないほうが良い
今回引っかかったのは double(mg(mdg+1))や str(ud(ug+26))のような関数カッコ内での配列変数の番号を計算処理する部分でした。
これは double(mg(n))や str(ud(n))のようにすれば動きます。
別の方のサイトで s_ab = int(strmid(m_list(ik),6,3))がエラーだったそうですので、関数カッコ内で複雑な処理は NGだと考えた方が良さそうです。
3、ソース内の #deffuncの総数が多いと落ちる
今回は #deffunの総数 250個程で一定数をオーバーするとなぜか落ちました。
しかし #deffuncの総数が原因なのかはよく分かりません。
まあ HSPでそこまで作るバカな人もそんなにいないと思うので気にする必要は無いかも知れませんね。
今回ビルドと実機テストで問題だったのは以上です。