[やりたいこと] ・バックログ表示画面で現在表示されているログ数によってスクロールを停止させたい 黒帯(文字列スクロール時に文字が隠れるように設置) 4←最古のログ 3 2 1←最新のログ 黒帯(文字列スクロール時に文字が隠れるように設置) このようなログ表示画面を表示させています。 1、4までスクロールさせたらそれ以上スクロールさせないようにしたい。
[やってみたこと] ログを表示しているピクチャの画像サイズ(縦)とY座標を取得して、ピクチャのサイズがピクチャのY座標一定値以下、以上ならスクロール停止させてみた。
[やってみた結果、どううまくいかないか] 上記の方法で最新のログまでスクロールさせてから↓キーを押してのスクロール停止は問題無く動いているようですが、最古のログまでスクロールさせてから↑キーを押すと停止はするのですが、取得ログの状況によっては添付画像の様に 文字が見切れたりして安定しませんでした。画像のスクロールバーはこんな風にしてみたいと言う理想です。
ログ表示画面表示に関して参考にしたサイト:http://yado.tk/wolf/ 以下、コマンド文、コード記載します。 宜しくお願い致します。
■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 1 と同じ 【2】 Sys12:メッセージ表示中?(1=ON) が 0 と同じ -◇分岐: 【1】 [ Sys12:メッセージ表示中?(1=ON) が 1 と同じ ]の場合↓ |▼ メッセージウィンドウに表示されている文字列を取得しCSelf5に格納 |■文字列操作:CSelf5[取得文字列] = SysS25[[読]文章表示の内容] |▼ 取得文字列重複判定を行う |■条件分岐(文字): 【1】 CSelf5[取得文字列]が CSelf7[文字列重複確認用] 以外 |-◇分岐: 【1】 [ CSelf5[取得文字列] CSelf7[文字列重複確認用] 以外 ]の場合↓ | |▼ 取得した文字列がすでに取得している文字列と違う場合 | |▼ ログ保持数を+1 | |■変数操作: CSelf2[ログ保持数] += 1 + 0 | |■条件分岐(変数): 【1】 CSelf2[ログ保持数] が 10 以上 | |-◇分岐: 【1】 [ CSelf2[ログ保持数] が 10 以上 ]の場合↓ | | |■文字列操作:CSelf6[ログ表示文字] =<の指定文字以降を切り出し> "―――――――――――――――――――――――" | | |■変数操作: CSelf2[ログ保持数] -= 1 + 0 | | |■ | |◇分岐終了◇ | |▼ 先に表示してある文字列の後ろに改行、区切りライン、改行を挿入する ※下のラインが最初に表示される | |■文字列操作:CSelf6[ログ表示文字] += "\n―――――――――――――――――――――――\n" | |■文字列操作:CSelf6[ログ表示文字] += CSelf5[取得文字列] | |▼ 取得した文字列を文字列重複確認用CSelf7に格納 | |■文字列操作:CSelf7[文字列重複確認用] = CSelf5[取得文字列] | |■ |◇分岐終了◇ |■キー入力:CSelf0[キーボード判定]キーボード(100〜) [キーコード[131]のみ判定] ( Sキー ) |■キー入力:CSelf1[パッド判定]パッド(300〜) [キーコード[307]のみ判定] ( ENDキー ) |■条件分岐(変数): 【1】 CSelf0[キーボード判定] が 131 と同じ 【2】 CSelf1[パッド判定] が 307 と同じ |-◇分岐: 【1】 [ CSelf0[キーボード判定] が 131 と同じ ]の場合↓ | |●ラベル「キー処理」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>> | |■ |-◇分岐: 【2】 [ CSelf1[パッド判定] が 307 と同じ ]の場合↓ | |●ラベル地点「キー処理」 <<<<<<<<<<<<<<<<<<<<<<<<★ | |▼ イベント実行中や移動中の場合は、最大5フレームまで終了を待つ | |■回数付きループ [ 5 ]回 | | |●ラベル地点「ログ」 <<<<<<<<<<<<<<<<<<<<<<<<★ | | |■変数操作+: CSelf11[別マップ移動チェック] = 現在のマップID | | |■条件分岐(変数): 【1】 Sys13:イベント実行中?(1=ON) が 0 と同じ | | |-◇分岐: 【1】 [ Sys13:イベント実行中?(1=ON) が 0 と同じ ]の場合↓ | | | |■条件分岐(変数): 【1】 Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0 と同じ | | | |-◇分岐: 【1】 [ Sys35:主人公移動中?(1=YES) マスの間にいるかどう が 0 と同じ ]の場合↓ | | | | |▼ 別のマップへ移動していたら、自作メニューは起動しない | | | | |■変数操作+: CSelf11[別マップ移動チェック] -= 現在のマップID | | | | |■条件分岐(変数): 【1】 CSelf11[別マップ移動チェック] が 0 と同じ | | | | |-◇分岐: 【1】 [ CSelf11[別マップ移動チェック] が 0 と同じ ]の場合↓ | | | | | |▼ 自作メニューを表示(移動しないように一時的にキー入力を禁止する) | | | | | |■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ] | | | | | |■次イベントの予約: [このコモンから+0] コモン409:[ テスト中 ] | | | | | |■ウェイト:1 フレーム | | | | | |■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ] | | | | | |▼ 自作メニューの処理が終わるまでループし続ける | | | | | |■ | | | | |◇分岐終了◇ | | | | |▼ サブキーを押し続けている場合は、サブキーを離すまでループし続ける | | | | |■ループ開始 | | | | | |■キー入力:CSelf0[キーボード判定]キーボード(100〜) [キーコード[131]のみ判定] ( Sキー ) | | | | | |■キー入力:CSelf1[パッド判定]パッド(300〜) [キーコード[307]のみ判定] ( ENDキー ) | | | | | |■条件分岐(変数): 【1】 CSelf0[キーボード判定] が 0 と同じ 【2】 CSelf1[パッド判定] が 0 と同じ | | | | | |-◇分岐: 【1】 [ CSelf0[キーボード判定] が 0 と同じ ]の場合↓ | | | | | | |■イベント処理中断 | | | | | | |■ | | | | | |-◇分岐: 【2】 [ CSelf1[パッド判定] が 0 と同じ ]の場合↓ | | | | | | |■イベント処理中断 | | | | | | |■ | | | | | |◇分岐終了◇ | | | | | |■ウェイト:1 フレーム | | | | | |■ | | | | |◇ループここまで◇◇ | | | | |■ | | | |◇分岐終了◇ | | | |■ | | |◇分岐終了◇ | | |■ | |◇ループここまで◇◇ | |■キー入力禁止/許可: ↓キー ←キー →キー ↑キー [ 移動時× キー入力○ ] | |■キー入力禁止/許可: 決定 キャンセル サブ [ 移動時× キー入力× ] | |▼ ログ表示の時邪魔になる特殊文字を削除する | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> "\font[2]" | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> "\f[18]" | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> "\f[12]" | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> "\." | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> "\sp" | |■文字列操作:CSelf6[ログ表示文字] =<から→の文字列を全消去> " " | |▼ ログ表示画面背景 表示 不透明度200 ピクチャ100000 | |■ピクチャ表示:100000 [左上]ウィンドウ「<SQUARE>」サイズ[320,240] X:0 Y:0 / 0(0)フレーム / パターン 1 / 透 200 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0] | |▼ ログ表示画面上下に黒帯 表示 不透明度255 ピクチャ100002〜100003 | |■ピクチャ表示:100002 [左上]ウィンドウ「<SQUARE>」サイズ[320,16] X:0 Y:0 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0] | |■ピクチャ表示:100003 [左下]ウィンドウ「<SQUARE>」サイズ[320,16] X:0 Y:240 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0] | |▼ ログ表示 ピクチャ100001 | |■ピクチャ表示:100001 [左下]文字列[\f[10]\cself[6]\f] X:40 Y:220 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100] | |▼ ログ画面上部中央に「Log」の文字表示 ピクチャ100004 | |■ピクチャ表示:100004 [中心]文字列[Log] X:160 Y:8 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[200] G[200] B[200] | |▼ ログ画面下部中央に「↑・↓:ログの移動←・→:終了」の文字表示 ピクチャ100005 | |■ピクチャ表示:100005 [中心]文字列[\f[10]↑・↓:ロ] X:160 Y:233 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[200] G[200] B[200] | |▼ ログ画面右にスクロールバーフレーム表示 ピクチャ100006 | |■ピクチャ表示:100006 [左下]ウィンドウ「<SQUARE>FRAME」サイズ[12,200]相対X:298 Y:220 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100] | |▼ ログ画面右にスクロールバー表示 ピクチャ100007 | |■ピクチャ表示:100007 [左下]ウィンドウ「<SQUARE>」サイズ[8,196]相対X:300 Y:218 / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100] | |▼ ■■■■■■■■■■■■■■■■■■■■キー処理 | |■変数操作: CSelf10[キーコード] = 0 + 0 | |■ループ開始 | | |■ウェイト:1 フレーム | | |■変数操作: CSelf16[キー待ち時間] -= 1 + 0 | | |■キー入力:CSelf15[キー入力] 4方向 | | |■条件分岐(変数): 【1】 CSelf15[キー入力] が 0 と同じ 【2】 CSelf17[起動時キー押し禁止] が 1 と同じ | | |-◇分岐: 【1】 [ CSelf15[キー入力] が 0 と同じ ]の場合↓ | | | |■変数操作: CSelf16[キー待ち時間]〜CSelf17[起動時キー押し禁止] = 0 + 0 | | | |■ループ開始へ戻る | | | |■ | | |-◇分岐: 【2】 [ CSelf17[起動時キー押し禁止] が 1 と同じ ]の場合↓ | | | |■ループ開始へ戻る | | | |■ | | |◇分岐終了◇ | | |■条件分岐(変数): 【1】 CSelf15[キー入力] が 4 と同じ 【2】 CSelf15[キー入力] が 6 と同じ | | |-◇分岐: 【1】 [ CSelf15[キー入力] が 4 と同じ ]の場合↓ | | | |●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>> | | | |■ | | |-◇分岐: 【2】 [ CSelf15[キー入力] が 6 と同じ ]の場合↓ | | | |●ラベル「キャンセル」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>> | | | |■ | | |◇分岐終了◇ | | |■条件分岐(変数): 【1】 CSelf15[キー入力] が 2 と同じ 【2】 CSelf15[キー入力] が 8 と同じ | | |-◇分岐: 【1】 [ CSelf15[キー入力] が 2 と同じ ]の場合↓ | | | |■変数操作+: CSelf20 = ピクチャ:100001 の Y座標 | | | |■条件分岐(変数): 【1】 CSelf20 が 220 と同じ | | | |-◇分岐: 【1】 [ CSelf20 が 220 と同じ ]の場合↓ | | | | |■ | | | |-◇上記以外 | | | | |■ピクチャ移動:100001 相対X:0 Y:-10 / 0(0)フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値 | | | | |■ウェイト:1 フレーム | | | | |■ | | | |◇分岐終了◇ | | | |■ループ開始へ戻る | | | |■ | | |-◇分岐: 【2】 [ CSelf15[キー入力] が 8 と同じ ]の場合↓ | | | |■変数操作+: CSelf20 = ピクチャ:100001 の Y座標 | | | |■変数操作+: CSelf21 = ピクチャ:100001 の 画像サイズ(縦) | | | |■条件分岐(変数): 【1】 CSelf20 が CSelf21 以上 | | | |-◇分岐: 【1】 [ CSelf20 が CSelf21 以上 ]の場合↓ | | | | |■ | | | |-◇上記以外 | | | | |■ピクチャ移動:100001 相対X:0 Y:10 / 0(0)フレーム / パターン 1 / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値 | | | | |■ウェイト:1 フレーム | | | | |■ | | | |◇分岐終了◇ | | | |■ウェイト:1 フレーム | | | |■ループ開始へ戻る | | | |■ | | |◇分岐終了◇ | | |■条件分岐(変数): 【1】 CSelf16[キー待ち時間] が 1 以上 | | |-◇分岐: 【1】 [ CSelf16[キー待ち時間] が 1 以上 ]の場合↓ | | | |■ループ開始へ戻る | | | |■ | | |◇分岐終了◇ | | |■ | |◇ループここまで◇◇ | |▼ ■■■■■■■■■■終了処理 | |●ラベル地点「キャンセル」 <<<<<<<<<<<<<<<<<<<<<<<<★ | |▼ ログ画面で使用したピクチャ消去 ピクチャ100001〜100007 | |■ピクチャ消去:100000 〜 100007 / 0(0)フレーム | |■ウェイト:1 フレーム | |■キー入力禁止/許可: 決定 キャンセル サブ ↓キー ←キー →キー ↑キー [ 移動時○ キー入力○ ] | |■ |◇分岐終了◇ |■ -◇分岐: 【2】 [ Sys12:メッセージ表示中?(1=ON) が 0 と同じ ]の場合↓ |■ ◇分岐終了◇
WoditorEvCOMMAND_START [111][7,0]<0>(2,9000012,1,2,9000012,0,2)() [401][1,0]<0>(1)() [103][0,1]<1>()("メッセージウィンドウに表示されている文字列を取得しCSelf5に格納") [122][3,0]<1>(1600005,1,9900025)() [103][0,1]<1>()("取得文字列重複判定を行う") [112][3,4]<1>(1,286812677,1600007)("","","","") [401][1,0]<1>(1)() [103][0,1]<2>()("取得した文字列がすでに取得している文字列と違う場合") [103][0,1]<2>()("ログ保持数を+1") [121][4,0]<2>(1600002,1,0,256)() [111][4,0]<2>(1,1600002,10,1)() [401][1,0]<2>(1)() [122][2,1]<3>(1600006,2816)("―――――――――――――――――――――――") [121][4,0]<3>(1600002,1,0,512)() [0][0,0]<3>()() [499][0,0]<2>()() [103][0,1]<2>()("先に表示してある文字列の後ろに改行、区切りライン、改行を挿入する ※下のラインが最初に表示される") [122][2,1]<2>(1600006,256)("<\n>―――――――――――――――――――――――<\n>") [122][3,0]<2>(1600006,257,1600005)() [103][0,1]<2>()("取得した文字列を文字列重複確認用CSelf7に格納") [122][3,0]<2>(1600007,1,1600005)() [0][0,0]<2>()() [499][0,0]<1>()() [123][3,0]<1>(1600000,4352,131)() [123][3,0]<1>(1600001,4608,307)() [111][7,0]<1>(2,1600000,131,2,1600001,307,2)() [401][1,0]<1>(1)() [213][0,1]<2>()("キー処理") [0][0,0]<2>()() [401][1,0]<1>(2)() [212][0,1]<2>()("キー処理") [103][0,1]<2>()("イベント実行中や移動中の場合は、最大5フレームまで終了を待つ") [179][1,0]<2>(5)() [212][0,1]<3>()("ログ") [124][3,0]<3>(1600011,12288,0)() [111][4,0]<3>(1,9000013,0,2)() [401][1,0]<3>(1)() [111][4,0]<4>(1,9000035,0,2)() [401][1,0]<4>(1)() [103][0,1]<5>()("別のマップへ移動していたら、自作メニューは起動しない") [124][3,0]<5>(1600011,12800,0)() [111][4,0]<5>(1,1600011,0,2)() [401][1,0]<5>(1)() [103][0,1]<6>()("自作メニューを表示(移動しないように一時的にキー入力を禁止する)") [126][1,0]<6>(496)() [211][2,0]<6>(600100,0)() [180][1,0]<6>(1)() [126][1,0]<6>(240)() [103][0,1]<6>()("自作メニューの処理が終わるまでループし続ける") [0][0,0]<6>()() [499][0,0]<5>()() [103][0,1]<5>()("サブキーを押し続けている場合は、サブキーを離すまでループし続ける") [170][0,0]<5>()() [123][3,0]<6>(1600000,4352,131)() [123][3,0]<6>(1600001,4608,307)() [111][7,0]<6>(2,1600000,0,2,1600001,0,2)() [401][1,0]<6>(1)() [172][0,0]<7>()() [0][0,0]<7>()() [401][1,0]<6>(2)() [172][0,0]<7>()() [0][0,0]<7>()() [499][0,0]<6>()() [180][1,0]<6>(1)() [0][0,0]<6>()() [498][0,0]<5>()() [0][0,0]<5>()() [499][0,0]<4>()() [0][0,0]<4>()() [499][0,0]<3>()() [0][0,0]<3>()() [498][0,0]<2>()() [126][1,0]<2>(496)() [126][1,0]<2>(519)() [103][0,1]<2>()("ログ表示の時邪魔になる特殊文字を削除する") [122][2,1]<2>(1600006,2048)("\font[2]") [122][2,1]<2>(1600006,2048)("\f[18]") [122][2,1]<2>(1600006,2048)("\f[12]") [122][2,1]<2>(1600006,2048)("\.") [122][2,1]<2>(1600006,2048)("\sp") [122][2,1]<2>(1600006,2048)(" ") [103][0,1]<2>()("ログ表示画面背景 表示 不透明度200 ピクチャ100000") [150][18,1]<2>(48,100000,0,320,240,1,200,0,0,100,0,0,33554432,0,0,0,0,0)("<SQUARE>") [103][0,1]<2>()("ログ表示画面上下に黒帯 表示 不透明度255 ピクチャ100002〜100003") [150][18,1]<2>(48,100002,0,320,16,1,255,0,0,100,0,0,33554432,0,0,0,0,0)("<SQUARE>") [150][18,1]<2>(8240,100003,0,320,16,1,255,0,240,100,0,0,33554432,0,0,0,0,0)("<SQUARE>") [103][0,1]<2>()("ログ表示 ピクチャ100001") [150][11,1]<2>(8224,100001,0,1,1,1,255,40,220,100,0)("\f[10]\cself[6]\f[12]") [103][0,1]<2>()("ログ画面上部中央に「Log」の文字表示 ピクチャ100004") [150][18,1]<2>(4128,100004,0,1,1,1,255,160,8,100,0,0,33554432,0,0,200,200,200)("Log") [103][0,1]<2>()("ログ画面下部中央に「↑・↓:ログの移動←・→:終了」の文字表示 ピクチャ100005") [150][18,1]<2>(4128,100005,0,1,1,1,255,160,233,100,0,0,33554432,0,0,200,200,200)("\f[10]↑・↓:ログの移動\mx[32]←・→:終了\f[12]") [103][0,1]<2>()("ログ画面右にスクロールバーフレーム表示 ピクチャ100006") [150][11,1]<2>(73776,100006,0,12,200,1,255,298,220,100,0)("<SQUARE>FRAME") [103][0,1]<2>()("ログ画面右にスクロールバー表示 ピクチャ100007") [150][11,1]<2>(73776,100007,0,8,196,1,255,300,218,100,0)("<SQUARE>") [103][0,1]<2>()("■■■■■■■■■■■■■■■■■■■■キー処理") [121][4,0]<2>(1600010,0,0,0)() [170][0,0]<2>()() [180][1,0]<3>(1)() [121][4,0]<3>(1600016,1,0,512)() [123][2,0]<3>(1600015,1)() [111][7,0]<3>(2,1600015,0,2,1600017,1,2)() [401][1,0]<3>(1)() [121][5,0]<4>(1600016,0,0,65536,1)() [176][0,0]<4>()() [0][0,0]<4>()() [401][1,0]<3>(2)() [176][0,0]<4>()() [0][0,0]<4>()() [499][0,0]<3>()() [111][7,0]<3>(2,1600015,4,2,1600015,6,2)() [401][1,0]<3>(1)() [213][0,1]<4>()("キャンセル") [0][0,0]<4>()() [401][1,0]<3>(2)() [213][0,1]<4>()("キャンセル") [0][0,0]<4>()() [499][0,0]<3>()() [111][7,0]<3>(2,1600015,2,2,1600015,8,2)() [401][1,0]<3>(1)() [124][4,0]<4>(1600020,16384,100001,1)() [111][4,0]<4>(17,1600020,220,2)() [401][1,0]<4>(1)() [0][0,0]<5>()() [420][1,0]<4>(0)() [150][13,0]<5>(4263681,100001,0,0,0,1,-1000000,0,-10,-1000000,-1000000,0,16777216)() [180][1,0]<5>(1)() [0][0,0]<5>()() [499][0,0]<4>()() [176][0,0]<4>()() [0][0,0]<4>()() [401][1,0]<3>(2)() [124][4,0]<4>(1600020,16384,100001,1)() [124][4,0]<4>(1600021,16384,100001,3)() [111][4,0]<4>(17,1600020,1600021,1)() [401][1,0]<4>(1)() [0][0,0]<5>()() [420][1,0]<4>(0)() [150][13,0]<5>(4263681,100001,0,0,0,1,-1000000,0,10,-1000000,-1000000,0,16777216)() [180][1,0]<5>(1)() [0][0,0]<5>()() [499][0,0]<4>()() [180][1,0]<4>(1)() [176][0,0]<4>()() [0][0,0]<4>()() [499][0,0]<3>()() [111][4,0]<3>(1,1600016,1,1)() [401][1,0]<3>(1)() [176][0,0]<4>()() [0][0,0]<4>()() [499][0,0]<3>()() [0][0,0]<3>()() [498][0,0]<2>()() [103][0,1]<2>()("■■■■■■■■■■終了処理") [212][0,1]<2>()("キャンセル") [103][0,1]<2>()("ログ画面で使用したピクチャ消去 ピクチャ100001〜100007") [150][6,0]<2>(16777218,100000,0,0,0,100007)() [180][1,0]<2>(1)() [126][1,0]<2>(247)() [0][0,0]<2>()() [499][0,0]<1>()() [0][0,0]<1>()() [401][1,0]<0>(2)() [0][0,0]<1>()() [499][0,0]<0>()() WoditorEvCOMMAND_END
|