[HSP]フルカラー画像をフェードイン表示するには
HSPでWEBアルバムみたいなものを作っていたのですが、画像表示はやっぱりフェードイン・フェードアウトをやって見たくなります。そこでHSPのキーワード検索で「フェード」をキーワードに検索して見るとgfadeとかes_palfadeとかの命令が引っ掛かりますが、どうも求めている機能と違う。そこでネットで検索してみると下のサイトが引っ掛かりました。多分HSP関係では有名なサイトなのではないかと思います。
□関連:HSP CENTER 資料室 FAQ
http://hspcenter.com/hspdt/faq3.html
ちなみにフェードインは下のように最初暗い状態から徐々に明るく画像を表示する方法ですね。フェードアウトはこの逆になります。
それで、上記のサイトでフェードインとフェードアウトにやり方のところを見せて頂くと下記の様にありました。
■フルカラーでフェードイン・アウトしたい
Q.フルカラーのグラフィックをフェードイン処理したいのですが。
A.別のバッファにブラフィックをコピーしておき、それを徐々に半透明コピーすれば出来ます。
なるほどーーー。半透明コピーを使うんですね。納得です。
詳しくは、上記のサイトにサンプルのコードも載っているのでそちらをご参照ください。
変にgfadeとかある所為で悩んでしまった。なるほどgmode 3でgcopyするんですね。
ちなみにキモはboxfしているところですね。boxfでコピーする範囲を一旦黒く塗りつぶしてから半透明コピーしてあげないと、前の画像が残っていて徐々にフェードインしないで一気にフェードインするように見えます。実際にboxfを取ってみるとよくわかりますが、一気にフェードインしてあとしばらくループ終了待ちするような感じになります。
あとソースにあるようにredrawも0または2にしておいて書き換えが終わってから redraw 1したほうがいいですね。
waitですが5になってるので50msですね。HSPLetでJavaAppletにする場合最新のランタイム(JRE 1.6.0_10)だと処理速度が落ちたみたいで、wait5はないと処理落ちします。ちらちらして醜くなるので注意です。(JRE 1.6.0_7)だと1とかでも平気なんですけどねー。やっぱりセキュリティー関係の修正がいろいろ入っちゃった所為でしょうか?(黄色い三角マークと黄緑の枠とか)、僕はawat使ってやってたんですが、await 5とかでも(JRE 1.6.0_7)だと平気だった様な気がします。(まーよく考えたらawait 5は短すぎだと思いますけど)
もしかしたら逆に最新のJREの処理が早くなった所為でawait 5だとウェイトが足りなくなってしまったのかも?
最近の早いマシンだとどうなのか気ちょっときになるけどいいや。
そういうわけで大変参考になりました。
少しバージョンアップ、ページ切り替えをもうちょっとどうにかかっこよくしたいのですが、とても・・・面倒です。バグもまだ有ります。orz
□関連:ウェブアルバムみたいなもの(つくりかけ)https://blog.kumacchi.com/gagagagaga/webalbum/album.html
タグ : HSP