HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0316
ぱるさみこす【HSP3DISH】bufferでのginfo_winx,yが、窓0のサイズになってしまいます。10未解決


ぱるさみこす

リンク

2015/3/16(Mon) 06:51:47|NO.67913


repeat 5 buffer 3+cnt picload"pic"+(cnt+1)+".jpg" picsize(cnt,0)=ginfo_winx picsize(cnt,1)=ginfo_winy loop

上記が問題のスクリプトです。
Windows上ですと、変数picsizeに各画像のサイズが代入されて正常に動くのですが、
Android実機で動かすと、何やら変なサイズになってしまうんですね。
色々試して調べてみたところ、どうやらウィンドウID0のサイズが代入されてしまっているようなのです。
これは仕様なのでしょうか?

もちろん、普通に画像のサイズをスクリプトに打ち込んでもいいのですが、
アプリの都合上面倒なので、起動の際に縦横のサイズを収得する方法は何かないですかね?
もしいい方法があれば教えていただきたいです。

皆様の知恵をお貸しください。お願い致します。



この記事に返信する


FunnyMaker

リンク

2015/3/16(Mon) 07:10:42|NO.67914

ginfo_sx, ginfo_sy でもダメですか?



ぱるさみこす

リンク

2015/3/16(Mon) 07:41:44|NO.67917

>>FunnyMakerさん
返信ありがとうございます。

>ginfo_sx, ginfo_sy でもダメですか?
はい、こちらも試しましたが無理でした。
ただこちらは起動はするものの画面が真っ暗になって、
タップしたら強制終了されるといったような動作になりました。
一応書いておきますが、「タップしたら強制終了する」というのは、スクリプト上の動作による強制終了の可能性もあると思われます。
そういったスクリプトを書いているので一応


ちなみにスクリプトにサイズを直に書いてやると、正常に動いてくれました。



ぱるさみこす

リンク

2015/3/16(Mon) 08:39:53|NO.67918

すみません、ginfo_sx, ginfo_syで強制終了してしまうと書きましたが、どうやら別の原因がありそうです。
ginfo_sx, ginfo_syを元に戻しても同じ現象が起こり始めました。

また詳しい原因がわかり次第報告したいと思います。



ぱるさみこす

リンク

2015/3/16(Mon) 09:09:33|NO.67919

原因が分かったので報告させていただきます。
すみません、恥ずかしながら単純に私のミスでした。
data.dpmを再作成するのを忘れていて、必要なファイルが足りなくて強制終了
という形になってしまったのではないかと思われます。

その後ginfo_sx,ginfo_syでも無事普通に起動させることができました。
しかし、ginfo_winx,ginfo_winyと同じ実行結果になってしまいました。



FunnyMaker

リンク

2015/3/16(Mon) 09:24:32|NO.67920

そうですか。(早計かもですが、HSPの不具合と見るべきでしょうかね。)
最終手段として画像ファイルのヘッダを読んで縦横サイズを知るという手もあると思います。
この分野は私より詳しい人が沢山いるので、教えてくれるかもしれません。
お力になれなくて残念です。



zakki

リンク

2015/3/16(Mon) 21:10:33|NO.67936

Windows以外の環境ではOpenGLの制約で縦横ともに2の冪乗に切り上げられてるんじゃないかと
思いますが関係ありませんか?
#Androidで試してないので外していたらすみません



おにたま(管理人)

リンク

2015/3/16(Mon) 22:40:50|NO.67938

以下のようなスクリプトをandroid上で確認してみましたが、特に問題なくサイズは取得できていました。

#include "hsp3dish.as" buffer 1 picload "hsp3dish.png" sx=ginfo_sx:sy=ginfo_sy gsel 0 *main redraw 0 pos 0,0:celput 1 pos 0,0:color 0,0,0 mes "size=("+sx+","+sy+")" redraw 1 await 33 goto *main
こちらでも実行できて再現可能な短いスクリプトがあれば調べてみたいと思います。
ちなみに、ginfo_winx,ginfo_winyとginfo_sx,ginfo_syは、どちらも同じ値を返します。



zakki

リンク

2015/3/16(Mon) 23:08:23|NO.67941

すみません、NO.67936は勘違いでした。



ぱるさみこす

リンク

2015/3/17(Tue) 01:05:04|NO.67945

>>FunnyMakerさん
>お力になれなくて残念です。
いえいえ、この問題を諦めずに解決しようという姿勢を保てたのは、
あなたが質問を投稿して直ぐに回答して下さったおかげです。
感謝していますよ。

>>zakkiさん
勘違いであっても、回答してくださったことが嬉しいです。
ありがとうございました。

>>おにたまさん
掲示板上ですが、お会いできて嬉しいです。HSPにはいつもお世話になっています。

おにたまさんのあげられたスクリプトの方はまだ試してないのですが、
いくつか実験をしてみたので、結果を報告したいと思います。


repeat 5 buffer 3+cnt picload"pic"+(cnt+1)+".jpg" picsize(cnt,0)=ginfo_winx picsize(cnt,1)=ginfo_winy loop
となっているように、私のスクリプトではここで、
pic1.jpg
pic2.jpg
pic3.jpg
pic4.jpg
pic5.jpg
を読み込むようになっています。

まず、この5枚の画像を読み込んだ上で、5枚のサイズの含まれた変数をmesで出力してみましたところ、
windows上では各画像正常なサイズが表示されましたが、Android実機上では、
全て横360縦640(メイン画面に設定したサイズ)となっていました。

次に、1枚目だけを読み込んで、同じようにmesでサイズを確認しましたところ、
windows上では正常ですが、Android実機上ではやはり横360縦640と表示されていました。


ちなみに、Android実機で処理上、表示された画像を、画像編集ソフトのグリッド線に合わせて比べてみると、
やはり横360縦640を基準とした表示になっていることがわかりました。

他に何か原因があるかもしれないので、何かわかればまた報告したいと思います。


念のため環境を書いておきます。
Android実機:SOL23
jdk:1.6.0_33
ndk:r8b
ant:1.8.4
スクリプトエディタとDISHは最新のものを使用していますが、
アプリのプロジェクトは旧バージョンから引き続き使用しています。



ぱるさみこす

リンク

2015/3/17(Tue) 01:08:19|NO.67946

連投すみません、追記です。
>次に、1枚目だけを読み込んで、同じようにmesでサイズを確認しましたところ、
>windows上では正常ですが、Android実機上ではやはり横360縦640と表示されていました。
と書きましたが、これはrepeat等を使用せずに読み込んだということです。
具体的には

buffer 3 picload"pic1.jpg" picsize(0,0)=ginfo_sx picsize(0,1)=ginfo_sy
こう書きました。



ONION software Copyright 1997-2021(c) All rights reserved.