明らかに説明不足だったので解説と機能を足して再掲しました
こんな動きでどうでしょうか?
barw = 200
barh = 50
gyaku = 0
ugoki = 0
pos 10,10
mes "バーの横の長さ"
pos 130,10
input barw,100,20,3
pos 10,35
mes "バーの縦の長さ"
pos 130,35
input barh,100,20,3
objsize 300,30
pos 10,60
button "パターン1 3色のグラデーション",*pattern1
button "パターン2 3色のグラデーション",*pattern2
chkbox "逆回転",gyaku
chkbox "動きを見る",ugoki
onexit gosub *end_
stop
*draw
repeat
redraw 0
pos 10,240
gcopy 1,x,0,barw,barh
if gyaku = 0{
//普通の向き
x++
if x >= barw:x=0
} else {
//逆の向き
x--
if x <= 0:x=barw
}
//「動きを見る」用の処理
if ugoki {
gsel 1,1
pos 0,0
gcopy 2,0,0,barw*2,barh
color 0,0,0
line x,0,x+barw,0
line x+barw-1,0,x+barw-1,barh-1
line x,barh-1,x+barw-1,barh-1
line x,0,x,barh+1
gsel 0,0
}
//
redraw 1
await 16
loop
stop
*pattern1
//画像を描く
screen 1,barw*2,barh,2:title "動きを見るのをやめるとは×を押してね"
iro = 0xFF0000,0x00FF00,0x0000FF,0xFF0000,0x00FF00,0x0000FF,0xFF0000
repeat length(iro)-1
gradf (cnt*barw)/3,0,(barw/3)+1,100,0,iro(cnt),iro(cnt+1)
loop
//
//「動きを見る」用の処理
buffer 2,barw*2,barh
gcopy 1,0,0,barw*2,barh
//
gsel 0
goto *draw
*pattern2
//画像を描く
screen 1,barw*2,barh ,2:title "動きを見るのをやめるとは×を押してね"
;↑screenに変えれば見える!
iro = 0xFF7777,0x7777FF,0xFF7777,0x7777FF,0xFF7777
repeat length(iro)-1
gradf (cnt*barw/2),0,(barw/2)+1,100,0,iro(cnt),iro(cnt+1)
loop
//
//「動きを見る」用の処理
buffer 2,barw*2,barh
gcopy 1,0,0,barw*2,barh
//
gsel 0
goto *draw
*end_
if wparam = 1{
ugoki = 0
objprm 5,ugoki
gsel 1,-1
pos 0,0
gcopy 2,0,0,barw*2,barh
gsel 0,1
return
}
end
わからないところは聞いて下さい!