どうしても分からないので質問しました。
下のコードが、Windows版hsp3dishでは正常に動くのに、付属のhsp3dishHelperを使って
Android2.3.3向けにビルドしたAPKファイルから実機にインストールして実行すると、そのアプリが
強制終了されます。
#include "hsp3dish.as" #module Name_M_CPN4 ;角度単純化モジュール ; [書式] ; val = Mod_SimplifyAngle(P1,P2,P3) ; P1 : ターゲットの角度 (実数) ; P2 : オプション1。(1,2,3) = (正負を維持,最も単純な正の角度,〃負の角度) ; P3 : オプション2。(1,2) = (度数法,弧度法) #defcfunc Mod_SimplifyAngle double angle ,int opt1 , int opt2 if opt2 = 1 {;度数法 result = angle - double(int(angle/360.0))*360.0;正負を維持した場合 if (opt1 = 2)&(result < 0.0) : result + 360.0;最も単純な正の角にする場合 if (opt1 = 3)&(result > 0.0) : result - 360.0;最も単純な負の角にする場合 } else {;弧度法 result = angle - double(int(angle/(m_pi*2.0)))*m_pi*2.0 ;↓展開(こうしないとdishで落ちる) ;k = m_pi*2.0 ;result = angle - double(int(angle/k))*m_pi*2.0 if (opt1 = 2)&(result < 0.0) : result + m_pi*2.0 if (opt1 = 3)&(result > 0.0) : result - m_pi*2.0 } return result #global Target = m_pi*2.5 k1 = Mod_SimplifyAngle(Target,2,2) redraw 0 color 0,0,0 : boxf color 255,255,255 pos 0,0 : mes rad2deg(k1) redraw 1
(※笑っちゃうような処理をやっているかもしれません。もしそうだったとしても、どうか堪えて相手してやってください。)
18行目でアウトになることは分かっています。
そこで、18行目の式を軽く展開して、20,21行目のように処理を分けてやると落ちませんでした。
どうしてこうなるんでしょうか?
大口をたたくようかもしれませんが、これはバグでしょうか?
テストしたHSPのバージョンは 3.32 と、 3.4beta2 で、両方で同じ結果でした。
あと、ビルドの対象がAndroid 2.3.3 なのは、それ以外のバージョンを選んで新規プロジェクトを
作ろうとするとファイルのコピーの途中で内部エラーが発生して上手くいかないからです。
(※SDKマネージャで必要なものは全部入れたはずなのですが)
それで、他のバージョンのAndroid向けにビルドして試すことができていません。
もしかするとこれも何かを意味するのでしょうか?
これ以上自分では分からないところまできてしまいました。
どなたかご教授ください。