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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1219
EmilioEmily.ウインドウのリフレッシュ。5解決


EmilioEmily.

リンク

2010/12/19(Sun) 01:56:11|NO.36220

 度々失礼します。

 パターンエディタを作っています。
 HSPにはスプライト的なパターンを支援するCEL関連命令がありますが、
それが描写されるのは普通のウインドウです。
 ・・・この認識は、合っているでしょうか。


#module #deffunc nop return #defcfunc box int sx ,int sy ,int ex ,int ey line ex,sy ,sx,sy line ex,ey line sx,ey line sx,sy return 0 ;------ #deffunc white color 0xf0,0xf0,0xf0 return #deffunc black color 0,0,0 return #global ;----------------------------------------------------- #const MAIN (0) #const FRAME (2) #const TARGET (3) #const TRUE 1 #const FALSE 0 #const CMDAREAsizex (32*12) #const CMDAREAsizey 32 #const CMDAREAsx 16 #const CMDAREAsy 552 #const CMDAREAex CMDAREAsx+CMDAREAsizex #const CMDAREAey CMDAREAsy+CMDAREAsizey ;-------------------------------------------------------------------------------------------- screen MAIN ,800,600 ,0 ,0,32,800,600 ; 表示面。 buffer FRAME ,800,600 ,0 screen TARGET ,640,320,screen_normal+screen_hide+screen_tool ,0,0 gsel MAIN : cls 4 gsel TARGET : cls 4 gsel FRAME : cls 4 white ;-------------------------------------------------------------------------------------------- gsel FRAME i=box(CMDAREAsx-1,CMDAREAsy-1 ,CMDAREAex+1,CMDAREAey+0) ; cmd cx = CMDAREAsx cy = CMDAREAsy gsel MAIN objsize 32,CMDAREAsizey,0 pos cx+(32),cy button gosub "load" ,*ptnload pos cx+(32*8),cy chkbox "ptn表示" ,prnallptnF ;-------------------------------------------------------------------------------------------- repeat wait 2 getkey key_esc,27 : if (key_esc) : break ; 終了。 stick inkeyS,256,1 ; 左クリックのキーリピートも指定。 ;------ gsel MAIN redraw 0 pos 0,0 ; (超重要)ラストポイントが動くので、操作画面の座標をイニシャライズ。 gmode 0 : gcopy FRAME ,0,0,800,600 white : pos 512,560 mes "X:"+mousex +" Y:"+mousey ;------ ; パターンデータ表示/非表示。 if (prnallptnF != prnallptn_stat) { if (prnallptnF != FALSE) { gsel TARGET ,1 prnallptn_stat = TRUE } if (prnallptnF == FALSE) { gsel TARGET,-1 prnallptn_stat = FALSE } } redraw 1 loop end ;-------------------------------------------------------------------------------------------- *ptnload dialog "bmp" ,16 ,"パターンファイル" if (stat == TRUE) { ptnfile = refstr celload ptnfile ,TARGET ,0 ; BMPファイルを読む。 ; ここから以下は冗長な実験実装。 prnallptn_stat = FALSE gsel TARGET x = ginfo_sx y = ginfo_sy screen TARGET ,x,y,screen_normal+screen_hide+screen_tool ,0,0 ,x,y celload ptnfile ,TARGET ,0 } return

 BMPファイルをloadすると、冒頭で一度設定されたウインドウTARGETに
再定義されて読み込まれる・・・のですが、表示させた際にウインドウの端を
ドラッグしてリサイズしないと、load前のサイズを維持してフレームだけ
表示されるウインドウになってしまいます。
 サブルーチン*ptnloadの後半で、一度読み込んだ画像からサイズを調べて
改めてウインドウを定義するテストをしていますが、効果はないみたいです。

 celloadで読み込んだ画像サイズへウインドウがリサイズされない
(読み込み前のサイズ情報が残っている)この挙動は、現時点では
仕様と考えた方が良いのでしょうか。
 更に、ウインドウを(非表示ではなく)削除してcelloadするのも
検討しようとしたのですが、削除命令はないのでしょうか。
 画面制御命令を何度も見直したつもりですが。


## それと、上の質問とは無関係ですが。
## この掲示板は要望のカテゴリもありますが、
## 実際にしちゃうのは空気の読めない人でしょうか。
## 私は今、エディタがctrl+上下カーソルでスクロールした際に
## カーソル行がスクロールアウトしてしまうのと、
## 変数/ラベル等のシンボルが大文字小文字を認識してくれない
## 辺りの改善を、切に願っております。



この記事に返信する


damage

リンク

2010/12/19(Sun) 12:12:36|NO.36227

celloadを正しく使えば問題解決します。



ANTARES

リンク

2010/12/19(Sun) 23:31:02|NO.36243

celloadの解説を読み直しましょう。
標準エディタで「celload」にカーソルを置いてF1キーを押します。



EmilioEmily.

リンク

2010/12/20(Mon) 00:24:09|NO.36245

> damage様
> ANTARES様

 言わんとする事がピンとこなくて、ヘルプと暫く睨み合いをしました。


#const DISPO (4) *ptnload dialog "bmp" ,16 ,"パターンファイル" if (stat == TRUE) { ptnfile = refstr celload ptnfile ,DISPO ,0 ; BMPファイルを読む。 prnallptn_stat = FALSE gsel DISPO x = ginfo_winx y = ginfo_winy screen TARGET ,x,y,screen_normal+screen_hide+screen_tool ,0,0 ,x,y gsel TARGET gmode 0 : gcopy DISPO ,0,0,x,y } return

 何度かグチャグチャと書き直していて、やっと意味が分かりました。
 screenではなく、飽くまで buffer用の命令なのですね。

 御両方には感謝します。
 ありがとうございました。



EmilioEmily.

リンク

2010/12/20(Mon) 00:25:54|NO.36246

 すいません、解決フラグを指定し忘れました。



damage

リンク

2010/12/20(Mon) 21:57:43|NO.36261

ヘルプに書いてあることにピンとこなかったら質問しよう。「ヘルプのxxの意味が分からず」などとね。



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