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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0516
max残像を表現したい3未解決


max

リンク

2014/5/16(Fri) 00:35:00|NO.62017

読み込んだpngの画像を操作して動かしたら、その動いた後が残像に見えるようにしたいです。
どのようにしたらいいですか?
具体的なプログラムの例を教えてください。



この記事に返信する


??

リンク

2014/5/16(Fri) 17:16:16|NO.62024

こんな感じでどうでしょうか?できるだけコメントを書いたつもりですが、かなりわかりにくいと思います。

buffer 1,100,100:boxf//表示する画像を作成 残像の数=100 dim x,残像の数//マウス座標を記録する、 dim y,残像の数//配列変数を作成 gsel 0 color 255,255,255 repeat//メインループ redraw 0//描画を停止 boxf//画面を初期化 repeat 残像の数//残像を描画。残像の数だけループする。 if 残像の数!(cnt+1):x(cnt)=x(cnt+1):y(cnt)=y(cnt+1)//xとyにフレーム毎の座標を記録。0ほど古く、(残像の数-1)に近づくほど新しいマウス座標 pos x(cnt),y(cnt):gmode 3,100,100,(10.0/double(残像の数))*cnt:gcopy 1,0,0,100,100//画像を描画。この時、gmode3で半透明で表示する。 //ブレンド率の10.0の所で透明度を調整可能。正しくは255.0ですが、わかりやすくするために10.0にしています。 loop redraw 1//描画を再開。これが無いと画面がチラつく。 x(残像の数-1)=mousex//マウス座標を記録。残像の数が50の場合、 y(残像の数-1)=mousey//配列変数は0~49までしかないので、-1をしないとエラーが発生する。 await loop//前作った時は何時間も掛かったのに、今やったら10分程度で出来た。思ったより簡単に出来た。※個人的な感想です。感想には個人差があります※



kanahiron

リンク

2014/5/16(Fri) 17:43:27|NO.62026

超簡単にこんな方法もありますよ

	buffer 1,100,100 ;画像の代わり
boxf buffer 2,640,480 ;白で色加算コピーをすると薄くなっていきます gsel 0 repeat//メインループ redraw 0//描画を停止 pos 0,0 gmode 5,640,480,16 //16の数値を大きくするとすぐ消えるようになる 小さくすると長く残る gcopy 2,0,0,640,480 gmode 0 //自分はgmodeを0以外のモードにした時はすぐ0に戻しています pos mousex, mousey gcopy 1,0,0,100,100 redraw 1 await 16 loop

NO.62024さんのはawaitの引数が無指定(=0)になっていてPCに無駄に負荷がかかります
await 16が標準的です



??

リンク

2014/5/16(Fri) 18:51:47|NO.62028

kanahironさん

>>awaitの引数が無指定(=0)になっていてPCに無駄に負荷がかかります
確かにawait 16の方がいいですね。次から気をつけます。



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