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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0506
つれづれねこdialog命令で選んだ画像が表示できません6未解決


つれづれねこ

リンク

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に文字列が無いと意味無いが

これ以上は違う方の質問とかぶるからこっちは終わり



TMKL

リンク

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
最初に一回指定するだけでいいはずです



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