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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1013
ケチャップリン文字をクリックし、別な場所へ複製しまた文字をクリックすると最初の文字が消えてします3解決


ケチャップリン

リンク

2012/10/13(Sat) 00:55:15|NO.49959

画面上に文字とラインを表示させ、文字をクリックしマウスにくっつくよう複製し
ラインの下の画面上をクリックするとそこに置くようにし、またラインより上の文字を
クリックし複製すると、最初においた文字が消えてしまします。
最初の文字の場所をうまく記憶させるような事はできますか?
また、いい方法があれば教えていただけないでしょうか

screen 0,300,300 cls pos 0.0 color 0, 0, 0 :boxf color 255, 255, 255 pos 30, 20 mes "文字セレクト" pos 30, 40 mes "● ▲" line 0,80,300,80 *sentaku ;;;;マウスポジションを探してクリックしたものの判別 x=mousex : y=mousey if (x>30)&(x<45)&(y>30)&(y<55) : gosub *cl redraw 1 await 1 goto *sentaku color 0,0,0 *cl stick key if key=256 : gosub *cl2 return ;;;;クリックした時の動作 *cl2 redraw 2;ちらつき防止 pos 0, 0 color 0, 0, 0 :boxf color 255, 255, 255 pos 30, 20 mes "文字セレクト" pos 30, 40 mes "● ▲" line 0,80,600,80 pos mousex,mousey color 255, 255, 255 gmode 4,,,256 mes "●" redraw 1;実描画 await 1 x=mousex : y=mousey stick key if key=256 { if (x>0)&(x<300)&(y>80)&(y<300) : gosub *set } goto *cl2 *set gosub *sentaku



この記事に返信する


暇人

リンク

2012/10/13(Sat) 03:14:35|NO.49962

単に画像として残れば良いなら仮想画面に書き込んで
表にコピーすれば良い

NO.49959のはgosubしてるのにreturnせずに再度gosubしてたり(gosub内でgosub出来る数は決まってる)
gotoとgosubが入り組んでて流れが読みにくいので変えてある

buffer 1,300,300 //仮想画面確保(ID1) cls pos 0.0 color 0, 0, 0 :boxf color 255, 255, 255 pos 30, 20 mes "文字セレクト" pos 30, 40 mes "● ▲" line 0,80,300,80//ここまで仮想画面に描画 screen 0,300,300//描画先を表画面に *sentaku redraw 2;ちらつき防止 pos 0, 0 gmode 0 gcopy 1,0,0,300,300 //仮想画面から表画面にコピー stick key x=mousex : y=mousey ;;;;クリックした時の動作 if key=256 { if y<80 { //ラインより上 ;;;;マウスポジションを探してクリックしたものの判別 if (x>30)&(x<45)&(y>30)&(y<55) : cl_sel=1 //セレクトNOをセット if (x>30+32)&(x<45+32)&(y>30)&(y<55) : cl_sel=2 }else{ //ラインより下 if (x>0)&(x<300)&(y>80)&(y<300) and (cl_sel>0) : gosub *set } } if cl_sel>0 {//セレクトNOがセットされてる pos x, y color 255, 255, 255 if cl_sel=1 :mes "●" if cl_sel=2 :mes "▲" } redraw 1 await 1 goto *sentaku *set gsel 1 //描画先に仮想画面選択 pos x, y if cl_sel=1 :mes "●" if cl_sel=2 :mes "▲" cl_sel=0 //0クリアしなければ連続で同じ文字を置ける gsel 0 //描画先に表画面選択 return

座標や書き込んだ文字を記憶したいなら
配列変数を使うのが一般的



ケチャップリン

リンク

2012/10/13(Sat) 03:50:00|NO.49963

返信ありがとうございます。
無事に先に進めそうです。
自分で調べて解決できなかったので、すごく助かりました。



暇人

リンク

2012/10/13(Sat) 04:36:07|NO.49964

>gosub内でgosub出来る数は決まってる
この書き方だと違う解釈もできてしまうので補足

gosubはreturnしないで多重にgosub出来る回数が決まってる
ヘルプでは最大32重までとなってるが実際は違う
(バグか変更された事をヘルプに書いてないかは分からない)

*@ title ""+sublev gosub *@b
sublevが510(バージョンによって違う)でスタック領域のオーバーフローになる



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