HSP3Dishでのcelloadについて
しまくろねこ(おにいさん) 2013/4/7(Sun) 22:04:02|NO.53489
こんにちわ。
HSP3Dishを利用している過程で気になっていたことがあったので、ご報告させて頂きます。
画像読み込み命令の「celload」についてです。
Android実機にてPNGファイルを読み込むときにcelloadでアプリが強制終了してしまう現象ですが、どうもファイル名が起因しているような感じがします。(すべてこれが起因とは断定できませんが)
下記の ケース(1) は矢印が描画されたPNGファイルを読み込む処理ですが、Android実機で動作させると"arrow_hidari.png"を読み込むところで内部エラー(13)となってしまいます。
ちなみにPNGファイルは全て、横:64/縦:73ドット、24Bitでアルファチャンネル設定済みです。
PNGファイルを作成したソフトはバラバラではなく、同一のものです。
;ケース(1)
;
celload "arrow_ue.png", 2, 0
celload "arrow_sita.png", 3, 0
celload "arrow_hidari.png", 4, 0 ;←ここから内部エラー13(Logcat)となる
celload "arrow_migi.png", 5, 0
celload "arrow_hidari_ue.png", 6, 0
celload "arrow_hidari_sita.png", 7, 0
celload "arrow_migi_ue.png", 8, 0
celload "arrow_migi_sita.png", 9, 0
そこで、PNGファイルの名前を下記の ケース(2) のように変更してAndroid実機で動作させたところ、エラーなく正常にアプリが動作しました。
PNGファイルの内容はそのままで、ファイル名だけを変更。
;ケース(2)
;
celload "ar_U.png", 2, 0
celload "ar_D.png", 3, 0
celload "ar_L.png", 4, 0 ;←エラーとならずにこれ以降もちゃんと処理される
celload "ar_R.png", 5, 0
celload "ar_LU.png", 6, 0
celload "ar_LD.png", 7, 0
celload "ar_RU.png", 8, 0
celload "ar_RD.png", 9, 0
まだ色々と調べたわけではありませんので、原因についてはもしかすると多々あるかもしれません。
取り急ぎではありますがご報告とさせて頂きます。
しまくろねこ(おにいさん) 2013/4/10(Wed) 22:17:30|NO.53522
こんにちわ。
時間が少しできましたので調べてみました。
調べる方法はいたってシンプルですが、エラーが起きるファイル名の文字数を減らしていく方法で試してみました。
調べた結果どうも、Android実機ではcelloadで読み込むファイル名(拡張子は除いた)の文字数が「12文字以上」で内部エラーとなるようです。
今回調査した画像ファイルはPNGファイルですが、他のJPG等のファイルでも同様の現象が起きるかについては不明です。
123456789012345.png (結果:celloadで内部エラー13)
12345678901234.png (結果:celloadで内部エラー13)
1234567890123.png (結果:celloadで内部エラー13)
123456789012.png (結果:celloadで内部エラー13)
12345678901.png (結果:エラー起きず)
arrow_hidari.png (結果:celloadで内部エラー13)
arrow_hidar.png (結果:エラー起きず)
以上で報告終わりです。
おにたま(管理人) 2013/4/11(Thu) 22:19:35|NO.53527
ご報告ありがとうございます。
data.dpmなどのパックされたファイルから読み出す場合は、HSPのpackfile仕様により長いファイル名は使用できません。
以下を参考にしてみてください。
http://lhsp.s206.xrea.com/hsp_tips4.html
しまくろねこ(おにいさん) 2013/4/12(Fri) 21:28:03|NO.53532
開発お疲れ様でございます。
お返事ありがとうございます。
「HSP3 プログラミング・マニュアル」 の 「5.17.PACKFILEと暗号化」に、
>パックファイルには、無制限に複数のファイルを指定することができます。 パックファイル内で階層を表現することはできません。 ファイル名は、拡張子も含めて15文字までが識別対象になります。 (ロングファイル名でも認識します。)
の記載があったことを今確認しましたが、HSP3Dishマニュアルにはファイル名の長さに関する記載は無かったため、私と同様に誤認をする人が出てくるかもしれません。
もし出来たらで結構なのですが、HSP3Dish Andoird(NDK)版プログラミングガイドに、データファイル作成で使用するファイルのファイル名には文字数の制限がある旨の説明を入れてもらえると他に利用者にも良いのではないかと思います。