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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0324
kasu画像8解決


kasu

リンク

2013/3/24(Sun) 17:03:15|NO.53204

すみません、解決したと思ってチェックを入れてしまったので
新規で質問させていただきます。

先ほどの「画像」というタイトルの質問の内容についてです。
ありさんが考えてくれた処理で、ブレンド率を1ずつではなく、3ずつ増やせるようにするには
どうしたらよいでしょうか?
色々試してみましたがうまくいきませんでした。



この記事に返信する


リボ助

リンク

2013/3/24(Sun) 18:20:42|NO.53210

通りすがり
#const をいじる(エラーチェックしてね)


#const ablend 3 #const wariai 128/ablend screen 1, 640, 480 : cls 4 color 255, 0, 0 : circle 0, 0, 80, 80 color 0, 255, 0 : circle 80, 0, 160, 80 color 0, 0, 255 : circle 160, 0, 240, 80 color 255, 255, 255 : circle 240, 0, 320, 80 celdiv 1, 80, 80, 40, 40 cno = 0, 1, 2 cx = 100, 320, 540 cy = 240, 240, 240 bl = 0, 0, 0 flg = 0 bl(0) = 1 gsel 0, 1 *main redraw 0 color 0, 0, 0 : boxf repeat 3 if bl(cnt) >= 255 { gmode 4, , , 255 color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, 3 } else { if bl(cnt) ! 0 { gmode 4, , , bl(cnt) color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, cno(cnt) bl(cnt) = limit(bl(cnt) + ablend, 0, 255) } } loop if flg < 3 { if bl(flg)/ablend = wariai { flg + 1 bl(flg) = 1 } } redraw 1 title "ブレンド率=" + bl(0) + " " + bl(1) + " " + bl(2) await 10 goto *main



kasu

リンク

2013/3/24(Sun) 18:58:13|NO.53213

できました!ありがとうございます。
お礼を言ったとたんに次の質問というのもどうかと思いますが……
repeat 3の後の

if bl(cnt) >= 255 {
のところを

if (bl(cnt) >= 255 && bl(cnt) <= 300) {

といった具合にし、ある程度白い円を描画したら消してしまいたいです。
ですが、limitの終値を300にしても、上記の方法では白い円が描画されっぱなしです。
さらに
円を描画→白い円を上書き→消す
という一連の流れを繰り返すにはどうしたらいいですか……?
初歩的な質問ばかりですみません。



リボ助

リンク

2013/3/24(Sun) 20:16:40|NO.53219

gmode の ブレンド率を「1」にするか
celput の2番目の要素を「4」にするとか?

繰り返す場合は、このスクリプト自体をサブルーチンとして
扱い、メインから繰り返し呼び出す。。とか?

工夫してみてください



kasu

リンク

2013/3/24(Sun) 21:22:01|NO.53222

サブルーチンにして外部から呼び出す方法は試しましたが
三つ画像を描画して、白い円が消える(何も描画されていない状態に戻る)こともなく
そしてループされるでもなく、終わってしまいます。



kasu

リンク

2013/3/24(Sun) 23:53:36|NO.53233

今のところこんな感じです。
何がいけないのでしょうか。
実行してみていただけないでしょうか……?



#const ablend 3 #const prop 128/ablend screen 1, 640, 480 : cls 4 color 255, 0, 0 : circle 0, 0, 80, 80 color 0, 255, 0 : circle 80, 0, 160, 80 color 0, 0, 255 : circle 160, 0, 240, 80 color 255, 255, 255 : circle 240, 0, 320, 80 celdiv 1, 80, 80, 40, 40 cno = 0, 1, 2 cx = 100, 320, 540 cy = 240, 240, 240 bl = 0, 0, 0 flg = 0 bl(0) = 1 gsel 0, 1 repeat redraw 0 gosub *Back gosub *main redraw 1 await loop *Back color : boxf return *main repeat 3 cx(cnt) = (cnt+1)*120 cy(cnt) = (cnt+1)*60 loop repeat 3 if (bl(cnt) >= 255 and bl(cnt) < 300){ bl++ gmode 4, , , 255 color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, 3 }else{ if bl(cnt) < 255 { gmode 4, , , bl(cnt) color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, cno(cnt) bl(cnt) = limit(bl(cnt) + ablend, 0, 255) } } loop if (flg < 3){ if bl(flg)/ablend = prop { flg + 1 bl(flg) = 1 } } if (flg = 3) : flg = 0 await 10 return



暇人

リンク

2013/3/25(Mon) 00:25:02|NO.53237

変更部分は//

repeat 3 if (bl(cnt) >= 255 and bl(cnt) < 300){ bl(cnt)++ // gmode 4, , , 255 color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, 3 if bl(cnt)=300 {bl(cnt)=1} // }else{ if bl(cnt) ! 0 { // gmode 4, , , bl(cnt) color 0, 0, 0 pos cx(cnt), cy(cnt) celput 1, cno(cnt) bl(cnt) = limit(bl(cnt) + ablend, 0, 255) } } loop



kasu

リンク

2013/3/25(Mon) 16:06:36|NO.53247

遅くなってすみません。
画像を消すのと、ループはできました。

このスクリプトで、3つ画像を描画して消したら、次の3つは座標を下にずらして
描画したいと考えました。

if (flg = 3) : flg = 0 : count + 1
というふうにして、countが0のときはx=0,y=0
countが1のときはx=30,y=30
といった感じに書いたら、ブレンド率が最大になったものから順番に移動したいのに
3つ同時に座標が移動してしまいます。
どのように書いたらうまくいくでしょうか……



kasu

リンク

2013/3/29(Fri) 14:52:48|NO.53325

ありがとうございました。



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