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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0819
モノブロスes_exboxfについて教えてください8解決


モノブロス

リンク

2009/8/19(Wed) 07:16:30|NO.27152

hspdxfixのes_exboxfの使い方を教えてください
ゲームでフェードイン・フェードアウトをしたいのですが
es_exboxfを使ってもフェードイン・フェードアウトされません

スクリプトはこんな風にしてます

buffer 1, 640, 480 moji = "フェードテスト" kazu = strlen(moji) font "MS ゴシック", 64, 0 : color 0, 0, 0 pos (640 - 32 * kazu) / 2, (480 - 64) / 2 : mes moji es_buffer 1 gsel 0 fa = 240 fs = 20 repeat 12 gmode 0 pos 0, 0 : es_copy 1, 0, 0, 640, 480 es_exboxf 0, 0, 640, 480, $000000, 0, 0, 0, ESB_ALPHA, fa fa -= fs es_sync await 0 loop



この記事に返信する


あり

リンク

2009/8/19(Wed) 10:37:30|NO.27153

es_syncが0なので起動した瞬間に処理が終わっている様ですね。
es_syncを66ぐらいにすればちゃんとフェードインでの表示を確認できました。

あと、たった数行で済むのですから初期化部分も書いて
コピペするだけで動作が確認できる様にしておいて下さいね。
手間もありますが初期化部分に問題がある事もありますので。



いつか質問した者

リンク

2009/8/19(Wed) 15:18:53|NO.27165

ありさん好きです。



モノブロス

リンク

2009/8/19(Wed) 17:37:27|NO.27169

es_syncを66にしてみましたがだめでした
初期化はes_excopyは使えるので問題ないとおもうんですが
es_exboxfはやっぱり使えないです

前回のものに初期化処理を加えたもの

#include "hspdxfix.as" screen 0, 640, 480, 0, (ginfo_dispx - 640) / 2, (ginfo_dispy - 480) / 2 title "フェードテスト" dialog "フルスクリーンで起動しますか?", 2, "Config" if stat = 6 : screenmode = 0 if stat = 7 : screenmode = 1 es_ini 512,512,360 ; system初期化 es_screen 640,480,16,0,screenmode,1 ;スクリーン初期化 if stat=1 : goto *dderr1 if stat=2 : goto *dderr2 goto *start ; 正常に完了 *dderr1 dialog "DirectXの初期化に失敗しました",1 end *dderr2 dialog "スクリーンの初期化に失敗しました",1 end *dxerr3 es_bye : wait 100 dialog "VRAMの容量が不足しています。",1 : end *pushkey stick esc, 128 if esc = 128 : end return *start buffer 1, 640, 480 moji = "フェードテスト" kazu = strlen(moji) font "MS ゴシック", 64, 0 : color 0, 0, 0 pos (640 - 32 * kazu) / 2, (480 - 64) / 2 : mes moji es_buffer 1 gsel 0 fa = 240 fs = 20 repeat 12 gmode 0 pos 0, 0 : es_copy 1, 0, 0, 640, 480 es_exboxf 0, 0, 640, 480, $000000, 0, 0, 0, ESB_ALPHA, fa fa -= fs gosub *pushkey es_sync 66 await 0 loop repeat gmode 0 pos 0, 0 : es_copy 1, 0, 0, 640, 480 gosub *pushkey es_sync 66 await 0 loop



ANTARES

リンク

2009/8/20(Thu) 00:36:16|NO.27185

 私の環境ではウィンドウでもフルスクリーンでもフェードインします。
es_exboxfの行をコメントアウトするとしなくなります。



モノブロス

リンク

2009/8/20(Thu) 07:11:03|NO.27189

ANTARESさん動作報告ありがとうございます
ちゃんとフェードされるということは
プログラムの書き方の問題ではないということでしょうか?
自分の環境では何回やってもフェードしません

今はbuffer1を黒く塗って
es_excopyでフェードしてます
この方法とes_exboxfでする方法だったら
やっぱりes_exboxfの方が早いですよね?



あり

リンク

2009/8/20(Thu) 15:08:14|NO.27198

モノブロスさんのPCがes_exboxfに対応していない可能性もありますが
(es_excopyは機能するようなので謎ですが・・・)

・HSPとHSPDXを最新の物にしてみる。
・es_screenのカラーモードを24bitや32bitにしてみる(又はデスクトップの色数を変えてみる等)
・es_bufferのオフスクリーンバッファをメインメモリに取ってみる。

等を試してみるともしかしたら正しい動作になるかもしれません。
・・・私に思いつくのはこれくらいですね。

以下はes_excopyとes_exboxfの簡易的な実行速度計測です。
es_excopyとes_exboxfのコメントアウトを切り替えて使ってください。
私の環境ではes_exboxfが約1割程速かったです。
(オフスクリーンバッファがメインメモリだと大差無し)
#include "hspdx.as"
onexit *owari es_ini es_screen 640, 480, 16, 0, 1, 1 buffer 1, 640, 480 moji = "アルファテスト" kazu = strlen(moji) font "MS ゴシック", 64, 0 : color 0, 0, 0 pos (640 - 32 * kazu) / 2, (480 - 64) / 2 : mes moji es_buffer 1 buffer 2, 640, 480 : color 255 : boxf es_buffer 2 gsel 0 wait 50 es_timer t1,0 repeat 1000 ; 1000回繰り返した時間を計測 es_cls 255, 255, 255 gmode 0 pos 0, 0 : es_copy 1, 0, 0, 640, 480 ;es_excopy 2, 0, 0, 640, 480, 640, 480, 0, 0, 0, ESB_ALPHA, 128, $ffffff es_exboxf 0, 0, 640, 480, $ff0000, 0, 0, 0, ESB_ALPHA, 128 es_sync await loop es_timer t2, 0 : t3=t2-t1 color 0, 0, 0 : es_fmes ""+t3 es_sync stop *owari es_bye end



モノブロス

リンク

2009/8/21(Fri) 01:09:58|NO.27218

ありさんありがとうございます
ありさんのスクリプトだとちゃんとされたので
ためしにhspdxfixを使わずに
hspdxを使ってみたらちゃんとフェードされました



ANTARES

リンク

2009/8/22(Sat) 01:32:06|NO.27237

 作者も書いてるけどhdpdxfixと3.1〜3.2のhspdxは同じものです。
3.0は調べていません。



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