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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1212
aoi文字移動の動きを滑らかに4解決


aoi

リンク

2007/12/12(Wed) 00:17:01|NO.12774

始めまして。
プログラミングを始めたばかりの者ですが、
現在以下のようなスクリプトで黒い背景画面に表示窓をつけて、
その中を文章が文字色を変えて(ある単語は赤で他は黒のように)
右から左へスクロールします。
しかし、moji,col,shiの変数量が116になり、
そのせいか文字が流れるように動かなくなりました。
滑らかに動くようにする方法はあるでしょうか。

pre screen 0,1020,1000,0,0,0
sdim moji,2000
dim col,2000
dim shi,2000
x=900
dx=90
font msgothic,35,0
moji(1)"○○"
moji(2)""

 ・
col(1)
 ・
 ・
shi(1)
 ・
 ・

*meinloop
redraw 0
color 255,255,255
boxf
x=x-dx
aa=1
bb=0
repeat 116
color col(aa),0,0
pos x +bb, 300
mes moji(aa)
aa=aa+1
bb=bb+shi(aa)*5
color 0,0,0

redraw 1
await 16
goto *meinloop/pre



この記事に返信する


eller

リンク

2007/12/12(Wed) 07:56:35|NO.12775

aoiさん、こんにちは。

aoiさんが提示されたスクリプトはこのままでは動作しないので、こちらで動作させて検証することができません。
特に「repeat 116」に対応する「loop」が無いのが問題です。転記ミスでしょうか?

さて「color 0,0,0」の位置に「loop」があると仮定した上での回答ですが、dxの値が大きすぎるだけではないかと思います。
dxの値を調節してみてください。

moji = "HSPは","Hot Soup Processor","の略称です。" col = 0, 255, 0 x = ginfo_winx dx = 3 // この程度で充分だと思います font msgothic, 35 *main x -= dx bb = 0 redraw 0 color 255, 255, 255 : boxf foreach moji // この場合は「repeat 3」と同じ pos x + bb, 300 color col(cnt), 0, 0 mes moji(cnt) bb += ginfo_mesx loop redraw 1 await 16 goto *main
解釈したものを私なりにまとめるとこんな感じになりました。
ginfo_mesxは便利ですので、もしご存知でなければワンキーヘルプなどで調べてみてください。



aoi

リンク

2007/12/12(Wed) 13:42:48|NO.12776

ellerさん
ご回答ありがとうございます。
提示していただいたスクリプトで作ってみたところ、文字がスムーズに動きました。
しかし、表示窓を作ろうとして
以下のように書いたところ(少し長くなってしまいましたが)
文章が提示されなくなってしまいました。
ドットの位置は合っていると思うのですが何が原因でしょうか。

screen 0,1020,1000,0,0,0
moji = "HSPは","Hot Soup Processor","の略称です。"
col = 0, 255, 0

x=ginfo_winx
dx=3
font msgothic,35

  color 255,255,255
boxf
color 0,0,0
  boxf 0,0,390,900
boxf 630,0,1020,900
boxf 390,0,630,290
boxf 390,340,630,900
*main
x -= dx
bb = 0
redraw 0
color 255, 255, 255 :boxf
foreach moji
pos x + bb, 300
color col(cnt), 0, 0
mes moji(cnt)
bb += ginfo_mesx

color 255,255,255
boxf
color 0,0,0
  boxf 0,0,390,900
boxf 630,0,1020,900
boxf 390,0,630,290
boxf 390,340,630,900
loop
redraw 1
await 16
goto *main



eller

リンク

2007/12/12(Wed) 14:01:14|NO.12777

スクリプトを見直して、「描画する順序」をよく調べてみてください(コメントを使うとやりやすいと思います)。
文字を描画した上に何かを上書きしていませんか?

また、「1回だけ実行すれば良い処理」はループの外に出すと良いですよ。



aoi

リンク

2007/12/12(Wed) 15:51:04|NO.12783

ellerさん
ありがとうございます。
とても参考になりました。
ご指摘の通りやってみたいと思います。



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