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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0902
矢野文字中央表示の謎4解決


矢野

リンク

2007/9/2(Sun) 12:23:45|NO.10854

スクリプトのHSP3.1への移行を試みています。
HSP2.61では正常に表示されていたのですが、
HSP3.1では、なぜか正常に表示されないので、
修正方法を教えてください。

それは、一度文字を画面の中央に表示した後
画面を更新して、再度表示しようとしたら
文字が右にずれてしまうのです。
その原因は、ginfo(14)で取得したメッセージの出力xサイズが
2度目に画面を表示した時には正しく表示されないのです。
タイトル画面に、その数字を表示するように設定しましたので
次のスクリプトを実行してみてください。


#include "hsp3util.as" *hajime screen 0,ginfo_dispx,ginfo_dispy,0,0,0,ginfo_dispx,ginfo_dispy cls ;画面の表面のクリアー gsel 0,1 onexit goto *owari color 38,30,117 ;画面の色の設定(青色) boxf 0,0,ginfo_dispx,ginfo_dispy ;画面上で、矩形(四角形)に塗りつぶす。 font "MS ゴシック",30,1 ;表題文字のフォントの大きさとスタイル pos 2000,1000 hyoudai="文字中央の実験です。右上の「×」を押してください。" emes hyoudai iti=0 iti=ginfo(14) pos (ginfo_dispx-iti)/2,250 color 192,79,50 text 5 emes hyoudai pos ((ginfo_dispx-iti)/2)-1,248 color 55,255,0 emes hyoudai title "文字表示の実験です。ginfo(14)で取得したメッセージの出力Xサイズ= " +iti stop *owari dialog "実験を開始する場合は「はい」を\n中止する場合は「いいえ」を\n押してください。",2 if stat=6:goto *hajime if stat=7:end

解明をよろしくお願いします。



この記事に返信する


なたで

リンク

2007/9/2(Sun) 12:54:45|NO.10855

textで0より大きな値にすると
emesは1文字1文字表示されます。
1度目は

#include "hsp3util.as" font "MS ゴシック",20,1 emes "文字の表示" mes "最後にmesで出力された文字の横の長さは" + ginfo(14) +"です。"
2回目は18行目でtext 5と設定されているので、1文字の横幅になります。

#include "hsp3util.as" font "MS ゴシック",20,1 text 5 emes "文字の表示" mes "最後にmesで出力された文字の横の長さは" + ginfo(14) +"です。"
clsで初期化してもtextの設定は残るのです。

解決方法は、文字の長さを調べる時にtext 0を設定する方法。

#include "hsp3util.as" font "MS ゴシック",20,1 color 255,255,255 text 0 emes "中央に表示します" x = ginfo(14) pos ((ginfo(26)-ginfo(14))/2),0 color text 5 emes "中央に表示します" pos 0,ginfo(23)
等としてください。



Drip

リンク

2007/9/2(Sun) 12:59:43|NO.10856

Dripです。

 矢野さん、こんにちは。emes命令は純正なHSPの命令ではなく、
commonフォルダ内のhsp3util.as内で定義されたモジュール命令です。
emes命令の中身を見てみると、137行目(emes命令の最後)に 
mes "":pos orgx

という行があります。この行は、textが指定された場合に到達します。 したがって、textで表示間隔を指定した後にemes命令を使用した場合は、 ginfo(14)の値が破棄されてしまいます。(表示した文字サイズにはなりません。)  モジュール命令や他人の作ったスクリプトを利用する場合は、その中身をよく確認し、 問題が無い事を確かめてから利用するようにして下さい。



矢野

リンク

2007/9/2(Sun) 20:09:21|NO.10857

素早い回答ありがとうございます。

なたでさんの方法で解決しました。
また、Dripさんの説明で、なぜ不具合が起きたのか
よく分かりました。感謝感激です。

スクリプトの移行作業はほとんど完成したのですが、
まだ、いくつかの不具合があります。
どうしても解決しない場合には、また質問させていただきます。



矢野

リンク

2007/9/3(Mon) 00:07:59|NO.10860

解決しているのですが、1つ補足しておきます。

それは、2.61では正常に稼働していたのに、3.1では稼働しなくなったと書きましたが、実は
スクリプトの一部変更を余儀なくされ、その変更のために
そのままでは稼働しなくなったということが、皆さんの指摘で分かりました。

「text命令は、HSP3から標準でなくモジュールを使用した拡張命令として扱われています。
 HSP2.xと異なり、text命令で指定した待ち時間はemes命令に反映されますので
 注意してください。」

ということで、mes命令からemes命令に変更したために、
従来のままでは稼働しなくなったということです。



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