|
 |
|
2015/5/29(Fri) 21:12:37|NO.69472
hgimg3のhgdraw命令についてですが、
hgdraw 0で、全画面の描画。
hgdraw 1で、予めhgviewで指定した座標内を描画。
hgdraw 2は意味がわかりません。描画命令に描画しないという意味があるのか、
使い道がわかりません。
hgdraw 4で、画面消去せず維持。hgdraw 5で、画面消去せずhgviewの指定範囲を描画。
hgdraw 2を除いて上記の解釈で合ってますでしょうか?
【サンプル】
hgview 802,430,257,20
hgdraw 5
gmode 2,257,20
pos 930,440
hgrotate A_TEXT,0,0
hgsync 16
hgview 822,545,105,40
hgdraw 5
gmode 0,210,80
pos 872,565
hgrotate B_PICTURE,0,0,,105,40
hgsync 16
hgview 942,545,105,40
hgdraw 5
gmode 0,210,80
pos 994,565
hgrotate C_PICTURE,0,0,,105,40
hgsync 16
私は、所々のオブジェクトをある条件下で描画させるプログラムを組んでいるのですが、
上記のプログラムを実行すると、B_PICTUREが消えてしまいます。
hgdraw~hgsync間にhgrotateを使って画像やtexmesを描画させているのですが、描画する度に
他のオブジェクトが消えてしまう現象が発生して困っています。
色々なモード(hgdraw)を使うとわかりにくいので、単純にhgdraw 5(画面消去しない/指定箇所を描画)で
描画しているのですが、なぜかオブジェクトが消えてしまったりと訳がわかりません。
画面消去をせず、描画だけなのだから消えるわけないと思うのですが、私が誤った理解をしているので
しょうか?
HSPのサンプルも1つしかなく、hgdraw 0と1しか使っておらず、背景テクスチャなども使っていないので
参考になりませんでした。
どなたかhgdrawのモードについて詳しく教えて頂けませんでしょうか。
上記のサンプルでおかしい場所や当方が間違った解釈をしている場合はご指摘頂けると助かります。
よろしくお願い致します。
|
|
2015/5/30(Sat) 01:50:37|NO.69497
hgdraw 2 は背景色や背景テクスチャでクリアだけしたいとか
直接描画用のhgview設定を摘要したい時にする
hgview設定変更したいだけならhgdraw 7 にするが・・・
>上記のプログラムを実行すると、B_PICTUREが消えてしまいます。
>他のオブジェクトが消えてしまう現象が発生して困っています。
スクリプトを半端に見せられても判断できません
不具合が出るとしたらhgviewの設定でウィンドウ範囲外を指定して命令が失敗してる
hgsyncはループ内最後のhgdraw後一回で良い
hgdraw 5じゃ無駄にオブジェクトを描画してしまう
#include "hgimg3.as"
screen 0,1024,768,0
cls 4
hgini
setcolor 255,255,255
addbox mdid,8,8 ; BOXモデルを作成
regobj mychr,mdid ; BOXモデルをオブジェクトとして登録
setpos HGOBJ_CAMERA, 0, 0, 20 ; カメラ位置設定
ax=0.0:ay=0.0
texload dir_exe+"\\sample\\hgimg3\\q.bmp"
mest = stat
texload dir_exe+"\\sample\\hgimg3\\sb_bg1.bmp"
mesta = stat
texload dir_exe+ "\\sample\\hgimg3\\btex.bmp"
mestb = stat
texload dir_exe+"\\sample\\hgimg3\\chrome.bmp"
mestc = stat
rot = 0.0
*main
hgdraw 0
rot+0.05
hgview 802,430,1024-802,20
hgdraw 7
gmode 2,257,20
pos 930,440
hgrotate mesta,0,0,rot
hgview 822,545,105,40
hgdraw 7
gmode 0,210,80
pos 872,565
hgrotate mestb,0,0,rot,105,40
hgview 942,545,1024-942,40
hgdraw 7
gmode 0,210,80
pos 994,565
hgrotate mestc,0,0,rot,105,40
hgsync 16
stick k,127
if k&128 : goto *owari ; [ESC]で終了
setang mychr, 0.0, rot,0.0 ; 箱の角度設定
goto *main
*owari
end

| |
|
2015/5/30(Sat) 01:56:43|NO.69498
既にオブジェクトを描画してて更に
>直接描画用のhgview設定を摘要したい時にする
で、1と一緒に設定だな・・・
|
|
2015/5/31(Sun) 12:24:06|NO.69548
暇人さん、ありがとうございます。
お蔭様でhgdraw 2の役割は理解できました。
長いので、スクリプトをコピペできないため半端なものしか提示できませんでした。
すみません。
同じ描画範囲内に別のオブジェクトを描くと、他のオブジェクトが消えてしまう現象が出ます。
hgrotate命令で、画像が異なるだけで、サイズとか座標は一緒です。画像が異なるだけで消えてしまうのでしょうか?
私だけでしょうか、なんか癖がありますね・・hsp。
XNAで昔同じものを組んだことがあるのですが、すんなりできたのに(T_T)
何を作りたいかと言うと、ゲームでよく「名前を入力してください」という画面ありますよね。
あれを再現したいのです。
おおまかなフローチャートを書くと、
①予めinput命令で入力ボックスとOK,CANCEL画像ボタン、「入力してね」メッセージをtexmesとhgrotateで描画。
②入力待機させ、[OK][CANCEL]ボタンにマウスカーソルが触れたら、同じ座標に色が反転した画像を描画。
③上記状態で左クリックされたら次の処理。
④押されなかったら現状維持。マウスカーソルが、ボタン枠内を外れたら反転してたボタン画像から
元のボタン画像に戻す。②へループ
こんな感じです。hgsyncでinputの入力ボックスやtexmesで描画したメッセージが、反転画像を描画後、
消えてしまいます。gotoやif~elseで②~④の間はやっているのですが、画像関連の命令が思ったように
動いてくれません。また、hgdraw7にしたら、input命令のカーソルが点滅から点灯に変わり、入力された文字を表示
できなくなりました。
③のボタン枠内で左クリックされたら次の処理へ、それ以外の範囲でクリックしても無視・・は、
問題なくできています。
hgdraw,hgrotate,gmodeなどやたらややこしいような気がします。
この関係性がいまいち理解できていないのだろうか。
hgdrawは暇人さんのお陰で理解できました。hgrotateも理解できていると思います。
gmodeは、0で通常コピー。1がメモリ間コピー(これって描画はしないということでしょうか。バッファに描く?)
2で黒(0,0,0)をコピーしない。3でαブレンド(透明度設定)で合ってますかね。
それ以外は使うことないと思って覚えてません。

| |
|
2015/5/31(Sun) 13:10:49|NO.69549
>同じ描画範囲内に別のオブジェクトを描くと、他のオブジェクトが消えてしまう現象が出ます。
ここでのオブジェクトとは何?
3Dオブジェクト?
>①予めinput命令で入力ボックスとOK,CANCEL画像ボタン、「入力してね」メッセージをtexmesとhgrotateで描画。
inputボックスも自前で描画?
|
|
2015/5/31(Sun) 13:42:12|NO.69551
>gmodeは、0で通常コピー。1がメモリ間コピー(これって描画はしないということでしょうか。バッファに描く?)
通常時のgcopyでの内部処理の違い(場合により処理速度に違いが出る事がある)
hgimg3では関係ない
> 2で黒(0,0,0)をコピーしない。3でαブレンド(透明度設定)で合ってますかね。
hgimg3上では透明色を指定できるので
0、1が同じで透明色もコピー
2が透明色付きコピー
3、4が同じで透明色付き半透明合成コピー
透明色はtexload前に hgsetreq SYSREQ_COLORKEY,透明色 で設定を変えられる
|
|
2015/5/31(Sun) 14:15:02|NO.69554
>ここでのオブジェクトとは何?
>3Dオブジェクト?
hgsyncでinputの入力ボックスやtexmesで描画したメッセージが、反転画像を描画後、
消えてしまいます。
>inputボックスも自前で描画?
input命令です。
マウスカーソルの状態を監視ループでネスティングしながらinput命令は無理なんですかね。
同じループ内に記述すれば、inputの入力ボックスが点滅します(まぁ、当たり前ですが)
なので、マウスのカーソルを監視するループに入る前にinputを入れてますが、
マウスカーソルの監視ループに入ると、入力されたものが入力ボックスに
表示されなくなります。
|
|
2015/5/31(Sun) 14:28:31|NO.69555
ちなみに、こういったinput命令で入力を受け付けながらマウスカーソルの座標を監視し、
画像ボタン内にカーソルがきたら反転色の画像ボタンを表示させるとなると、マルチスレッドに
なりますよね。HSPでは実現不可ですかね。
|
|
2015/5/31(Sun) 15:26:58|NO.69556
自分ならこんな感じの流れにするけど・・・
#include "hgimg3.as"
screen 0,1024,768,0
cls 4
hgini
setcolor 255,255,255
addbox mdid,8,8 ; BOXモデルを作成
regobj mychr,mdid ; BOXモデルをオブジェクトとして登録
setpos HGOBJ_CAMERA, 0, 0, 20 ; カメラ位置設定
texload dir_exe+"\\sample\\hgimg3\\q.bmp"
mest = stat
texmake 256,32
title ""+stat
texid=stat
texcls texid,0
font "MS ゴシック",22
color 255,255,255
texmes "名前を入力して下さい",texid,0,0
texmake 256,128
okid=stat
texcls okid,$8844
font "MS ゴシック",80
color 128,128,128
texmes " [OK]",okid,0,0
texmake 256,128
cnid=stat
texcls cnid,$4488
font "MS ゴシック",40
color 128,128,128
texmes "[CANCEL]",cnid,0,20
rot = 0.0
clscolor $4444
button gosub "名前入力",*name_st
bid=stat
*main
hgdraw 0 //ここで画面クリアしてるので以降のhgdrawは4を含ませるが、クリアしないなら4は外す
rot+0.05
if name_f=1 {gosub *name_ip}
hgsync 16
stick k,127
if k&128 : goto *owari ; [ESC]で終了
setang mychr, 0.0, rot,0.0 ; 箱の角度設定
goto *main
*name_st
if name_f=0 {
clrobj bid,bid
pos 930-257/2,440+40
objmode 2
font "MS ゴシック",40
a=""
input a,257,40
iid=stat
name_f=1
}
return
*name_ip
hgview 802,430,1024-802,20
hgdraw 7
gmode 2,257,20
pos 930,440
hgrotate texid,0,0
hgview 822,545,105,40
hgdraw 7
gmode 0,210,80
pos 872,565
hgrotate okid,0,0,0,105,40
if abs(872-mousex)<105/2 and abs(565-mousey)<40/2 {
gmode 5,210,80,128
pos 872,565
hgrotate okid,0,0,0,105,40
if k&256 {
clrobj iid,iid
name=a
name_f=0
title "名前:"+name
}
}
hgview 942,545,1024-942,40
hgdraw 7
gmode 0,210,80
pos 994,565
hgrotate cnid,0,0,0,105,40
if abs(994-mousex)<105/2 and abs(565-mousey)<40/2 {
gmode 5,210,80,128
pos 994,565
hgrotate cnid,0,0,0,105,40
if k&256 {
clrobj iid,iid
a=""
name_f=0
pos 0,0
objmode 1
button gosub "名前入力",*name_st
bid=stat
}
}
return
*owari
end

| |
|
2015/5/31(Sun) 15:31:29|NO.69557
そもそもこの場合hgviewは必要無いな・・・
|
|
2015/5/31(Sun) 23:21:34|NO.69576
暇人さん、ありがとうございます。
サンプルプログラムとても参考になりました。
暇人さんのサンプルにならってコーディングしたのですが、
inputボックスやカーソルがものすごい勢いで点滅します。
入力しても、その上に白いボックスが表示されて何も出ません。
しかし、プロセスを終了する瞬間に一瞬だけ入力されたものが見えます。
あと、画面全体が点滅状態です。hgdraw 0 - hgsync 16で何度も描画してるからでしょうか?
でも、暇人さんのサンプルは点滅もせずinputボックスのカーソルも通常の点滅で正常ですし、
どうして同じように組んでいるのに結果がこうも違うのかわかりません。
input命令は、*mainルーチンの前に記述しています。
私は、最初から表示させたいのでフラグ立てはせずにやっています。
又、背景に画像をclstexで描画してます。予め描画しておきたいので、input命令同様に
*mainルーチンの前に、clstex => hgdraw 0 => gmode 0,1024,768 =>
hgrotate background,0,0 => hgsync 16をしていますが、これがいけないのでしょうか?
やはりgosubを使って背景描画用のサブルーチンを設けるべきなのでしょうか?
何度もすみません。当方の力量不足で自力では解決できそうにありません。
HSPのマニュアルに、hgdraw 4は画面クリアを"行わない"と書いてありますが、"行う"の
間違いですかね。4を抜いて画面クリアされないことを確認できました。
画面クリアを行わないなら4を抜いてくださいとサンプルにありましたし、自分でも
どうなるのか暇人さんのサンプルを使ってhgdrawのモードを色々変更して勉強してみました。
確かに4を抜くと画面クリアしなくなりますね。hgdraw 3でhgview内のみの描画を行えました。
|
|
2015/6/1(Mon) 00:03:44|NO.69577
やっぱり埒が明かないので問題を再現できるスクリプトが必要
根本的に何か勘違いしてる可能性がある
|
|
2015/6/1(Mon) 14:52:14|NO.69588
暇人さん
すみません。
色々やってみた結果、フルスクリーンを有効にするとinputの入力ボックスが
点滅状態になります。
暇人さんが作成されたプログラムも
hgsetreq SYSREQ_DXMODE,1
hgsetreq SYSREQ_DXWIDTH,1280
hgsetreq SYSREQ_DXHEIGHT,720
とやってフルスクリーン化すると、私のオリジナルプログラムと同じ現象が出てしまいました。
因みに、フルスクリーンを無効にするとちゃんと動いてました。
マウスカーソルが枠内にくれば画像が反転しますし、inputの入力ボックスも問題ありません
でした。
お騒がせしてすみません。何でフルスクリーンにすると、このような現象が出るのか
わかりません。何かわかりますでしょうか?
|
|
2015/6/1(Mon) 16:16:16|NO.69589
hgsetreq SYSREQ_DXMODE,1
hgsetreq SYSREQ_DXWIDTH,1024
hgsetreq SYSREQ_DXHEIGHT,768
の間違いです。
1280x720は当方のオリジナルの方で設定していたものでした、すみません。
|
|
2015/6/2(Tue) 00:05:40|NO.69605
あぁ、問題の大本が出てなかったな・・・
>何でフルスクリーンにすると、このような現象が出るのか
これはDirectXでは当然の事で色々やらないとボタン等は表示されない(DirectXの画面が上にかぶさってるだけだが・・・)
XNAやなんかは、その色々を省いて使い易いようにしてるらしい
手抜き自前描画のinputやってみたけど
変換候補出さなければ、使えなくはないかな・・・
#module
#uselib "imm32.dll"
#func ImmGetConversionStatus "ImmGetConversionStatus" sptr,var,var
#cfunc ImmGetContext "ImmGetContext" sptr
#func ImmGetCompositionString "ImmGetCompositionStringA" int,int,var,var
#func ImmReleaseContext "ImmReleaseContext" int
#const GCS_CURSORPOS $80
#const GCS_DELTASTART $100
#define GCS_COMPSTR 0x0008
#define WM_GETTEXT 0x000D
#uselib "user32.dll"
#func GetCaretPos "GetCaretPos" var
#cfunc GetCaretBlinkTime "GetCaretBlinkTime"
#func ShowWindow "ShowWindow" int,int
#deffunc setinput var v,int sx,int sy,int max
if Context=0 {Context=ImmGetContext(hwnd)}
if sx>0 {_sx=sx}else{_sx=64}
if sy>0 {_sy=sy}else{_sy=24}
if max {_max=max}else{_max=_sx*2/_sy-1}
_px=ginfo_cx
_py=ginfo_cy
pos ginfo_dispx,_py
input v,_sx, _sy, _max
id=stat
h = objinfo(id,2)
return
#deffunc inputdraw
dim CaretPos,2
GetCaretPos CaretPos
sdim buf,_max+128
sendmsg h, WM_GETTEXT, _max+128, varptr(buf)
gradf _px,_py,_sx+4,_sy+1,1,$777777,$dddddd
pos _px+4,_py
mes buf
pos _px+4+ginfo_mesx,_py
dwBufLen=0
ImmGetCompositionString Context,GCS_COMPSTR,lpBuf,dwBufLen
if stat>0{
dwBufLen=stat+1
sdim lpBuf,dwBufLen
ImmGetCompositionString Context,GCS_COMPSTR,lpBuf,dwBufLen
ImmGetCompositionString Context,GCS_CURSORPOS,tmp,tmp
index=stat
if index>0 {
pos ginfo_dispx,0
mes strmid(lpBuf,0,index)
addx=ginfo_mesx
}else{
addx=0
}
pos ginfo_dispx,0
mes lpBuf
saddx=ginfo_mesx
gradf _px+4+CaretPos-2,_py,saddx,_sy,1,$777777,$dddddd
gradf _px+4+CaretPos-2,_py-1+_sy+CaretPos(1),saddx,1,0,0,0
pos _px+4+CaretPos-2,_py+CaretPos(1)-1
mes lpBuf
}
if gettime(7)>500{gradf _px+4+CaretPos-2+addx,_py-1+CaretPos(1),1+(dwBufLen>0),_sy,1,0,0}
addx=0
return
#deffunc ime_end onexit
if Context=0 {ImmReleaseContext Context}
return
#global
ipx=100
ipy=0
isx=200
isy=40
pos ipx,ipy
objmode 2
font "MS ゴシック",isy
a=""
setinput a,isx,isy //input配置設定
repeat
redraw 0
color 255,255,255
boxf
color 255
inputdraw //input描画
await 16
redraw
title ""+a
loop
時間が出来たらhgimg3用にしてみる

| |
|
2015/6/4(Thu) 00:14:41|NO.69655
あ、他の方法として
なんちゃってフルスクリーンって方法もある
#include "hgimg3.as"
bgscr 0,1280,720,0,0,0
chgdisp 1, 1280,720 //解像度変更
cls 4
wait 10
hgini
setcolor 255,255,255
addbox mdid,8,8 ; BOXモデルを作成
regobj mychr,mdid ; BOXモデルをオブジェクトとして登録
setpos HGOBJ_CAMERA, 0, 0, 20 ; カメラ位置設定
texload dir_exe+"\\sample\\hgimg3\\q.bmp"
mest = stat
texmake 256,32
title ""+stat
texid=stat
texcls texid,0
font "MS ゴシック",22
color 255,255,255
texmes "名前を入力して下さい",texid,0,0
texmake 256,128
okid=stat
texcls okid,$ff008844
font "MS ゴシック",80
color 128,128,128
texmes " [OK]",okid,0,0
texmake 256,128
cnid=stat
texcls cnid,$ff004488
font "MS ゴシック",40
color 128,128,128
texmes "[CANCEL]",cnid,0,20
texmake 200,40,1
nmid=stat
texcls nmid,$ff888888
font "MS ゴシック",40
rot = 0.0
clscolor $4444
clrobj bid,bid
pos 930-257/2,440+40
objmode 2
font "MS ゴシック",40
a=""
input a,257,40
iid=stat
name_f=1
*main
hgdraw 0
rot+0.05
if name_f=1 {gosub *name_ip}
gmode 4,200,40,128
pos 1280/2,720/2
hgrotate nmid,0,0
hgsync 16
stick k,127
if k&128 : goto *owari ; [ESC]で終了
setang mychr, 0.0, rot,0.0 ; 箱の角度設定
goto *main
*name_ip
gmode 2,257,20
pos 930,440
hgrotate texid,0,0
gmode 0,210,80
pos 872,565
hgrotate okid,0,0,0,105,40
if abs(872-mousex)<105/2 and abs(565-mousey)<40/2 {
gmode 5,210,80,128
pos 872,565
hgrotate okid,0,0,0,105,40
if k&256 {
name=a
name_f=0
clrobj iid,iid
color 0,0,255
texmes name,nmid,0,0
}
}
gmode 0,210,80
pos 994,565
hgrotate cnid,0,0,0,105,40
if abs(994-mousex)<105/2 and abs(565-mousey)<40/2 {
gmode 5,210,80,128
pos 994,565
hgrotate cnid,0,0,0,105,40
if k&256 {
a=""
objprm iid,a
}
}
return
*owari
end

| |
|
2015/6/12(Fri) 23:14:07|NO.69747
暇人さん、ありがとうございます。
返信遅れてすみません。
サンプルとても参考になりました^^
ありがとうございます。
chgdispとbgscrでinputボックスの文字が表示できるのですね。
一つ勉強になりました。
すみません、では
hgsetreq SYSREQ_DXMODE,1
hgsetreq SYSREQ_DXWIDTH,1280
hgsetreq SYSREQ_DXHEIGHT,720
とやってたのと何が違うのでしょうか?
DirectXは、inputやbuttonをそのままでは使えないということを教えて頂きましたが、
bgscr/chgdispとhgsetreqとの違いを把握しておきたいのでご教授頂けませんでしょうか。
何度もすみません。
|
|
2015/6/13(Sat) 02:12:01|NO.69749
まずスフルクリーンのIMEについて自分的に分かり易い説明↓(HSPとは関係ないサイトなので先頭のh抜き)
ttp://nyaruru.hatenablog.com/entry/20070304/p2
>bgscr/chgdispとhgsetreqとの違いを把握しておきたいのでご教授頂けませんでしょうか。
bgscr/chgdispは解像度を変更して、ウィンドウでデスクトップを、隠してるだけで
解像度変更は関係なく、単にタイトルバーの無い大きいウィンドウで、画面を埋めてるのと同じです。
なので、ALT+TABを押しても他のウィンドウが、アクティブになってもhgimg3は、普通に動きます。
hgsetreq SYSREQ_DXMODE,1はデスクトップ画面がDirectXウィンドウに置き換わるような感じで
常にDirectXが全画面塗り替えます。DirectXが塗り替える間に描画された物が一瞬見える感じになる
>返信遅れてすみません。
いえいえ
今Hgimg3用のinput+IME操作描画モジュール作ってるんだけど
既に
文字入力用モジュール
http://wiki.hsp.moe/Module/文字入力モジュール.html
ってーのが作られてた・・・
自分のは描画も含めてモジュール化してるが・・・
|
|
2015/6/25(Thu) 21:19:09|NO.69861
暇人さん
丁寧な解説、ありがとうございました。
とてもわかりやすく説明して頂き助かりました^^
|
|
2015/9/7(Mon) 19:46:59|NO.71448
一応モジュールが出来たので・・・
hgimg3の直接描画を使った input,button,chkbox,listbox,combox を設置するモジュール
http://hsp.tv/play/pforum.php?mode=all&num=71423
サンプル
#include "hgimg3.as"
#include "mod_hgallwinobj.hsp" //必ずhgimg3.asの後にinclude
screen 0,120,40,0,ginfo_dispx/3,ginfo_dispy/3
objsize 120,20
button "ウィンドウモード",*_window
button "フルスクリーンモード",*_fullscreen
stop
*_window
screen 0,1280,720,0,100,100
goto *@f
*_fullscreen
bgscr 0,1280,720,0,0,0
hgsetreq SYSREQ_DXMODE,1
hgsetreq SYSREQ_DXWIDTH,1280
hgsetreq SYSREQ_DXHEIGHT,720
*@
hgini
setcolor 255,255,255
addbox mdid,12,12 ; BOXモデルを作成
regobj mychr,mdid ; BOXモデルをオブジェクトとして登録
setpos HGOBJ_CAMERA, 0, 0, 20 ; カメラ位置設定
texload dir_exe+"\\sample\\hgimg3\\q.bmp"
mest = stat
texmake 256,32
texid=stat
texcls texid,0
font "MS ゴシック",22,16+2
color 128,128,128
texmes "名前を入力して下さい ",texid,8,8
texmake 256,32
name_texid=stat
texcls name_texid,$88888888
font "MS ゴシック",28,16
color 0,255,255
texmes "name:",name_texid,2,2
hgSetImeStatus IMESTATUS_VISIBLE,1 //IME入力モード表示
font "MS 明朝",30,16
pos 50,200
name_str=""
hginput name_str,250,40,,,4 //フレーム4ドット
iid=stat
objenable iid,0 //フォーカスを外すために一旦無効化して
objenable iid,1 //有効に戻す
hgSetInput iid,HGINPUT_RGB_GMODE,$ffffff //hginputの文字色を変更
hgSetInput iid,HGINPUT_BG_RGB_GMODE,$885500,3,100 //hginputの背景色を変更し半透明指定
hgSetInput iid,HGINPUT_MODE,,,3+4 //通常カーソル非表示にして直接描画カーソル表示+hginput外をクリックするとフォーカスが外れる
hgSetIme IMECOLOR_INPUTBG, $885500,0,0 //IMEの背景を不透明にして色指定(文字色はhginputのが利用される)
name_f=1
font "MS ゴシック",30,0
objsize 120,40
pos 50,300
hgbutton gosub "[CANCEL]",*_cancel,2+32,$ffffffff,$ff44dddd,50 //点線枠非表示+押してる間以外フォーカスを合わせない //50フレーム使ってフェードイン
pos 180,300
hgbutton gosub "[OK]",*_ok,2+32,$ffffffff,$ff44dddd,50
rot = 0.0
clscolor $4444
*main
hgdraw
rot+0.05
hgAllWinObjDraw //hgAllWinObjを描画
imebuf=refstr //ime入力中文字列
actid=stat //フォーカスが合ってるhgAllWinObjID
if name_f {
if actid ! iid and name_str="" { //hgbuttonにフォーカスが合ってないなら"名前を入力して下さい"のテクスチャを表示
pos 50+256/2,200+32/2
gmode 3,256,32,255
hgrotate texid
}
}
pos 10+256/2,10+32/2
gmode 2,256,32,255
hgrotate name_texid
hgsync 16
stick k,127
if k&128 : goto *owari ; [ESC]で終了
setang mychr, 0.0, rot,0.0 ; 箱の角度設定
goto *main
*_cancel
name_str=""
objprm iid,""
return
*_ok
if name_str="" {return}
font "MS ゴシック",28,16
color 0,255,255
texmes "name:"+name_str,name_texid,2,2
clrobj
name_f=0
return
*owari
end

| |
|