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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0329
kasu画像について5未解決


kasu

リンク

2013/3/29(Fri) 14:57:39|NO.53327

「画像」というタイトルで質問をしましたが、回答が得られませんでしたので
新規で質問させていただきました。すみません。

画像を3つ描画するとき、ブレンド率を上げていって徐々に描画します。
一つ目のブレンド率が128のとき二つ目の描画をはじめ
二つ目のブレンド率が128のとき三つ目の描画をはじめ
一つ目のブレンド率が255になったら、一つ目の画像の座標だけ30下にずらしたいです。
二つ目と三つ目の画像はまだもとの座標のままですが、一つ目と同様に
ブレンド率が255になったら座標をずらしたいです。
自分で色々試しましたが、どうしても三つ一緒に座標がずれてしまうので
どうしたらよいか教えてください。



この記事に返信する


kasu

リンク

2013/3/29(Fri) 15:01:54|NO.53328

ちなみにスクリプトはこんな感じになっています。

#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 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 if (flg < 3){ if bl(flg)/ablend = prop { flg + 1 bl(flg) = 1 } } if (flg = 3) : flg = 0 await 10 return



fortunehill

リンク

2013/3/29(Fri) 16:33:52|NO.53329

/*良く判りませんがこう言う事でしょうか?*/

#const ablend 3 #const prop 128/ablend screen 1 :boxf 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 cn = 0, 1, 2 cx = 100,320,540 cy = 240,240,240 bl = 0, 0, 0 fg = 1, 0, 0 gsel 0,1 repeat :redraw 0 :color :boxf :gosub *label_1 :redraw 1 :await 30 title strf("%3d[%d] %3d[%d] %3d[%d]",bl(0),fg(0),bl(1),fg(1),bl(2),fg(2)) loop stop *label_1 repeat 3 if (fg(cnt) == 1) {if (bl(cnt) >= 255 and bl(cnt) < 300){ bl(cnt)++ :gmode 4,,,255 cy(cnt) = 270 ; pos cx(cnt),cy(cnt) :celput 1,3 if (bl(cnt) == 300) {bl(cnt) = 0} }else{ :gmode 4,,,bl(cnt) pos cx(cnt), cy(cnt) :celput 1,cn(cnt) bl(cnt) = limit(bl(cnt)+ablend,0,255)} } loop if (bl(0) >= 128) {fg(1) = 1} if (bl(1) >= 128) {fg(2) = 1} return



kasu

リンク

2013/4/5(Fri) 21:12:49|NO.53460

回答ありがとうございます。
すみません、色々見てみましたが少しよくわかりませんでした。
もしかしたらfortunehillさんのスクリプトでできるのかもしれませんが
描画したい画像が15個などに増えても対応できるようにしたいです。
自分ではわからなかったので書き込みさせていただきました、すいません。



あり

リンク

2013/4/6(Sat) 00:08:57|NO.53461

今まで提示されてきたサンプルはその時の質問の為に最適化した構成なので
そのまま新しい事に使うには難しい点が多いですし
このままでは一つのステップ毎に質問を追加していくばかりになるので
自力で問題を解決する為の基礎力と応用力を身につける為に
まずは配列変数を理解して15個以上のキャラクターを別々に動かす為には
どうすればいいのかを考えて自分でプログラムを作ってみてください。
(サンプルbasicフォルダのgrotate.hspが参考になりますがそのまま使ってはダメです)

それが出来れば後はキャラクターの状態を管理する為の配列変数を追加していく事で
目標を達成する事ができるようになるはずです。



暇人

リンク

2013/4/6(Sat) 07:52:33|NO.53467

>描画したい画像が15個などに増えても対応できるようにしたいです。

#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 //ここから max=15 sposx=(640/max) //表示位置をウィンドウの幅と個数から算出 repeat max cno(cnt) = cnt\3 cx(cnt) = sposx/2+cnt*sposx cy(cnt) = 240 bl(cnt) = 0 flg(cnt) = 0 loop //ここまで変更 bl(0) = 1 gsel 0, 1 repeat redraw 0 gosub *Back gosub *main redraw 1 await loop *Back color : boxf return *main repeat max if (bl(cnt) >= 255 and bl(cnt) < 300){ if bl(cnt)=255 {cy(cnt)+30} // 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 if (flg < max){ // if bl(flg)/ablend = prop { flg + 1 bl(flg) = 1 } } if (flg = max) : flg = 0 // await 10 return



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