|
|
2012/5/6(Sun) 11:45:11|NO.46482
dialogで選択した画像と、フキダシ画像、mesboxを
背景画像の上に表示させたいのですが
背景に画像が隠れてしまったり
背景だけが表示されなくなったりします。
画像どうしの重ね方がよく解らないので
修正をして教えて頂きたいです。
よろしくお願いします。
screen 0 , 640 , 480 , 0 , 0 , 0 , 640 , 480
celload "haikei.bmp" , 1 , 0
redraw 0
color 0,0,0
boxf
gmode 2
pos 0,0
celput 0
redraw 1
dialog "bmp;*.jpg", 16, "ガゾウファイル"
buffer 2
picload refstr
redraw 0
pos 457,195
celput 2
redraw 1
celload "fukidashi.gif", 2
redraw 0
gmode 2
pos 4,33
celput 2
redraw 1
*hyouji
onkey goto *inkey
pos 2,378
a=""
mesbox a,636,100,7,2500
*ao
stop
*inkey
if iparam=229 : goto *ao
if iparam=13 : goto *ok
goto *ao
*ok
color 255,255,255:boxf 30,60,370,238
color 0,0,0:pos 30,60
font "MS ゴシック" , 24 , 1
mes a
await 50
goto *hyouji
|
|
2012/5/6(Sun) 13:04:49|NO.46483
修正はせずコメントだけ入れた
とりあえず読んで自分で修正してみて
screen 0 , 640 , 480 , 0 , 0 , 0 , 640 , 480 //ウィンドウバッファID0を描画操作先として選択される
celload "haikei.bmp" , 1 , 0 //ウィンドウバッファID1に読み込み
redraw 0 //ID0の画面反映停止
color 0,0,0
boxf
gmode 2
pos 0,0 //ID0のの描画位置指定
celput 0 //ウィンドウバッファID0にから現在描画先のID0へ描画(ID1をコピーしたいなら celput 1)
redraw 1 //ID0の画面反映開始
dialog "bmp;*.jpg", 16, "ガゾウファイル"
buffer 2 //ここでウィンドウバッファID2が描画先にされる
picload refstr //ID2に読み込み
redraw 0 //ID2の画面反映停止(仮想画面なので意味なし)ID0を操作したいならこの命令前に gsel 0
pos 457,195 //ID2の描画位置指定
celput 2 //ID2にから現在描画先のID2へ描画
redraw 1 //ID2の画面反映開始 (仮想画面なので意味なし)
celload "fukidashi.gif", 2 //ID2に読み込み(上で既に読み込み描画された内容は初期化)
redraw 0 //まだID2が選択状態だから意味なし
gmode 2
pos 4,33
celput 2 //ここも(略
redraw 1 // (略
*hyouji //まだID2が描画操作先に選ばれてるから全て仮想画面で行われて見えない
onkey goto *inkey
pos 2,378
a=""
mesbox a,636,100,7,2500 //goto *okが実行されるたびにmesboxが作られて増えてく(内容の更新を反映するだけならobjprm オブジェクトID,文字列)
*ao
stop
*inkey
if iparam=229 : goto *ao
if iparam=13 : goto *ok
goto *ao
*ok
color 255,255,255:boxf 30,60,370,238
color 0,0,0:pos 30,60
font "MS ゴシック" , 24 , 1
mes a
await 50
goto *hyouji

| |
|
2012/5/6(Sun) 14:39:54|NO.46486
これで良いのでしょうか・・・
まだどこか違うような。
screen 0 , 640 , 480 , 0 , 0 , 0 , 640 , 480
celload "skin_m.bmp" , 0 , 0
redraw 0
color 0,0,0
boxf
gmode 2
pos 0,0
celput 0
redraw 1
; メイン画像の配置
dialog "bmp;*.jpg", 16, "ガゾウファイル"
buffer 2
picload refstr
gsel 0
pos 457,195
celput 2
; 吹き出し画像の配置
celload "fukidashi.gif", 3
gmode 2
pos 4,33
celput 3
*hyouji
; メッセージBOXの配置
onkey goto *inkey
pos 2,378
data=""
mes strmid(data, 0,13)
sdim buf1
sdim buf2
index = 0
cut = 13
cnvstow buf1, data
memcpy buf2, buf1, cut * 2, , index * 2
i = cnvwtos(buf2)
mesbox i,636,100,5,2500
objprm 0,i
*ao
stop
*inkey
if iparam=229 : goto *ao
if iparam=13 : goto *ok
goto *ao
*ok
color 255,255,255:boxf 30,60,370,238
color 0,0,0:pos 30,60
font "MS ゴシック" , 24 , 1
mes i
await 50
goto *hyouji
|
|
2012/5/6(Sun) 15:27:21|NO.46488
これ自分で実行してる?
> celload "skin_m.bmp" , 0 , 0
この時点でID0のウィンドウが仮想ウィンドウに強制的に変更されて見えなくなる(タスクマネージャ使わないと終了できない)
上でID0に読み込んでるのに
> celput 0
ID0からID0へ描画?
> onkey goto *inkey
NO.46483で書き忘れたけど
onkeyは最初に一度だけ実行すれば良い(ジャンプ先に変更が無ければ)
ジャンプはonkey行からでは無くstopやwait系命令で止まってる所からジャンプする
> mesbox i,636,100,5,2500
また*okされるたびにgoto *hyoujiに行き*hyoujiに飛んでどんどん増えてく
増えてくたびにオブジェクトIDが変る(オブジェクトIDはmesbox実行後statに入って返される)
mesbox常に新しく作られてるから
> objprm 0,i
が無意味になってる
|
|
2012/5/7(Mon) 12:16:05|NO.46496
こんな感じでしょうか。
一応動きますけど、
やっぱりmesbox辺りが
おかしいような。
mesboxをobjprmで
更新するときに
入力された文字が
入ってる変数を
a="":b=""とかで初期化
すれば良いのでしょうか?
screen 0 , 640 , 480 , 0 , 0 , 0 , 640 , 480
celload "skin_m.bmp" , 1 , 0
redraw 0
color 0,0,0
boxf
gmode 2
pos 0,0
celput 1
redraw 1
; メイン画像の配置
dialog "bmp;*.jpg", 16, "ガゾウファイル"
buffer 2
picload refstr
gsel 0
pos 457,195
celput 2
; 吹き出し画像の配置
celload "hukidashi_blue_001.gif", 3
gmode 2
pos 4,33
celput 3
; メッセージBOXの配置
onkey goto *inkey
sdim data , 30000 , 4
pos 2,378:data=""
a = strmid( data , 0 , 15)
b = strmid( data , 13 , 15)
mesbox a , 636,100 , 5 , 28+"\n"
*hyouji
objprm 0,a+"\n"
objprm 0,b+"\n"
stop
*ao
stop
*inkey
if iparam=229 : goto *ao
if iparam=13 : goto *ok
goto *ao
*ok
color 255,255,255:boxf 30,60,370,238
color 0,0,0:pos 30,60
font "MS ゴシック" , 24 , 1
mes a
await 50
goto *hyouji
|
|
2012/5/7(Mon) 20:34:56|NO.46505
まず最初の質問は解決してるんじゃ?
>やっぱりmesbox辺りが
> おかしいような。
どう動けば正しいのかは貴方しか分からない
> objprm 0,a+"\n"
> objprm 0,b+"\n"
二回連続で読んでも後から実行した内容が残るだけ
文字列を繋げたいなら+で繋げれば良い
objprm 0,a+"\n"+b
> a = strmid( data , 0 , 15)
> b = strmid( data , 13 , 15)
が入力待ち前に一回実行してるだけだから
最初からdataに文字列が無いと意味無いが
これ以上は違う方の質問とかぶるからこっちは終わり
|
|
2012/5/7(Mon) 20:44:52|NO.46507
まず、画像表示がおかしいです
すべてredraw 0〜redraw 1に入れましょう
次に、謎のaとb
三行になったら対応できないので全く意味がありません
また、文字化けします
謎の*aoラベル
何のためにあるのかわかりません
if iparam=229 : goto *ao
*okに行くのはiparam=13の時だけで、
ほかの場合は自動で*aoにいくのでいりません
font "MS ゴシック" , 24 , 1
最初に一回指定するだけでいいはずです
|
|