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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1122
空気(マクロ)clsのような気軽さでboxfによる画面消去が可能なマクロを作ってみた4解決


空気

リンク

2015/11/22(Sun) 16:51:16|NO.73197

(マクロ)clsのような気軽さでboxfによる画面消去が可能なマクロを作ってみた
既出かもしれませんが、boxfでcls互換の画面クリアをする場合、
「boxf : clrobj : pos 0,0 : color」
のようにclsに比べて記述が面倒だと感じてきたので、
cls+αβで気軽に記述できるようにするために
マクロを組んでみました。

初めて組んだマクロなので バグ報告、要望、感想等々ありましたら、
気軽にレスしてください。

以下、マクロの説明
clstype
指定タイプの画面クリアを実行 clstype p1,p2,p3,p4,p5 p1,p2,p3=0〜255(255) : 色コード(R,G,Bの輝度) p4=0〜2(0) : 画面クリアモード p5=0〜1(1) : カレントポジションの初期化 p4の画面クリアする画面クリアモードは、以下から選ぶことができます。 0(boxf : clrobj) :ウィンドウ内の情報とオブジェクトをすべてクリアします。 1(boxf) :ウィンドウ内の情報をすべてクリアします。 2(clrobj) :ウィンドウ内のオブジェクトをすべてクリアします。 redraw 0〜redraw2間に記述することで、 従来のclsで起こる書きかえ時のチラツキが起こりません。 p5で、カレントポジションの初期化を指定します。これは以下の中から選びます。 1を設定した場合は初期化、0の場合は初期化を行ないません。 ただし、オブジェクト以外のカレントポジションは画面クリア時に自動的に初期化されます。 モード値 内容 ------------------------------------------------------ 0 カレントポジションの初期化を行なわない 1 カレントポジションの初期化を行なう
以下、マクロとサンプルスクリプト(わかりづらいかもしれません。)


/*License:CC0 1.0 全世界 (CC0 1.0) パブリック・ドメイン提供
https://creativecommons.org/publicdomain/zero/1.0/deed.ja */ //マクロここから #define clstype(%1=255,%2=255,%3=255,%4=0,%5=1) if %4 < 3 {color %1,%2,%3} :\ if %4 < 2 {boxf} : if %4 != 1 && %4 <3 {clrobj} :\ if %4 < 3 {color} : if %5 = 1 {pos 0,0} //マクロここまで //サンプルスクリプトここから pos_reset = 1 repeat 3 cls_color(cnt) = 255 loop redraw 0 *start gradf ,,,,1,$505052,$000000 font "Liberation Mono" objmode 2 objsize 280 button gosub "boxfによるcls (clstype,,,,1)",*cls_label button gosub "clrobj (clstype,,,,2)",*clrobj_label button gosub "boxfによるcls : clrobj (clstype) ",*cls_clrobj_label pos 243 input cls_color(0),37,,3 input cls_color(1),37,,3 input cls_color(2),37,,3 pos ,150 input pos_reset,37,,1 color 255,255,255 pos 0,72 font "メイリオ",17 mes "画面クリア時のカラーR" pos 0,72+25 mes "画面クリア時のカラーG" pos 0,72+25+25 mes "画面クリア時のカラーB" pos 0,72+25+25+27 mes "カレントポジションの初期化 \n0=しない 1=する" redraw 1 stop *cls_label redraw 0 clstype cls_color(0),cls_color(1),cls_color(2),1,pos_reset gosub *Return_button_label return *cls_clrobj_label redraw 0 clstype cls_color(0),cls_color(1),cls_color(2),,pos_reset gosub *Return_button_label return *clrobj_label redraw 0 clstype ,,,2,pos_reset gosub *Return_button_label return *Return_button_label pos ,200 button gosub "もとに戻す",*Return_label redraw 1 return *Return_label redraw 0 clstype,,,,pos_reset goto *start //サンプルスクリプトここまで



この記事に返信する


Mituki

リンク

2015/11/22(Sun) 16:55:37|NO.73199

面白いですね!ゲームとかの設定とかみたいです。



空気

リンク

2015/11/22(Sun) 17:00:07|NO.73200

>Mitukiさん
感想ありがとうございます。
サンプルスクリプトもある程度はこだわって見ましたが、
マクロの使い方のサンプルスクリプトとしては
構造が複雑になってしまい、読みにくい気もします。



スペース

リンク

2015/11/22(Sun) 17:23:36|NO.73205

おお、これは便利ですね!



空気

リンク

2015/11/22(Sun) 17:35:38|NO.73207

マクロの説明に間違いがありましたので追記

誤:redraw 0〜redraw2間に記述することで、
  従来のclsで起こる書きかえ時のチラツキが起こりません。

正:redraw 0〜redraw1間に記述することで、
  従来のclsで起こる書きかえ時のチラツキが起こりません。



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