トップページ > 記事閲覧
DX_MOVIEPLAYTYPE_BCANCELの有効範囲
名前:was-blue.0793 日時: 2019/09/10 00:50

PlayMovie関数では、単純にムービーを再生することができます。 しかし、DX_MOVIEPLAYTYPE_BCANCEL関数では、ゲームパッドの入力に割り当てたキー以外からのキーボードからの入力をもってムービーの再生をキャンセルすることができません。 DX_MOVIEPLAYTYPE_BCANCELを使うPlayMovie関数においては、DX_INPUT_KEY_PAD1でキーボードに入力を割り当てたキーを含めたゲームパッド入力のみでしかムービーの再生を中断できないのは仕様でしょうか? よろしくお願いします。
メンテ

Page: 1 |

Re: DX_MOVIEPLAYTYPE_BCANCELの有効範囲 ( No.1 )
名前:管理人 日時:2019/09/11 00:24

> しかし、DX_MOVIEPLAYTYPE_BCANCEL関数では、ゲームパッドの入力に割り当てたキー以外からのキーボードからの入力をもってムービーの再生をキャンセルすることができません。 手元で試してみた限りでは、ゲームパッドの入力に割り当てていないキー( バックスペースキー等 )でも再生をキャンセルできました PlayMovie の内部では CheckHitKeyAll を使用していて、何かキーが押された状態( CheckHitKeyAll の戻り値が 0 以外 )で 再生が開始されたら、まずは何もキーが押されなくなる( CheckHitKeyAll の戻り値が 0 になる )まで待ち、 何もキーが押されない状態になったら、今度は何かキーが押されたら( CheckHitKeyAll の戻り値が 0 以外になったら )再生をキャンセルします なので、もしかしたら CheckHitKeyAll の戻り値が私の意図しない値になっているのかもしれません よろしければ以下のような CheckHitKeyAll の結果を表示するだけのプログラムを実行してみていただけないでしょうか? 通常は何もキーを押さなければ 0 となる筈ですが、何もキーを押していないのに 0 以外の値になっていたら、何か原因がわかるかもしれません #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // CheckHitKeyAll の結果を表示 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "CheckHitKeyAll = %d", CheckHitKeyAll() ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: DX_MOVIEPLAYTYPE_BCANCELの有効範囲 ( No.2 )
名前:was-blue.0793 日時:2019/09/11 23:51

検証してみたところ、USB接続のキーボードから入力したところゲームパッドに割り当てていないキーであってもムービーの入力をキャンセルできました。 また、入力がないのに戻り値が0以外になる事象も発生しませんでした。 一方で、DARTSLIVE-200Sという、実際にはキーボードとして認識される電子ダーツボードで入力を検証したところ、CheckHitKeyAllでは入力が抜け落ちる現象が発生しました。 (DARTSLIVE-200Sの入力がキーボード入力になることを利用したダーツアプリを開発していて現象が発生しました) しかし、GetInputChar関数で入力を受け取ることはできているため、入力が完全に認識されていないわけではない模様です。 DARTSLIVE-200SはBluetooth接続のため、Bluetooth接続による入力の抜け落ちか、DARTSLIVE-200Sのハードの仕様かまでは断定ができないところですが…… なお、当方ではBluetooth接続のキーボードを所有していないため、Bluetooth接続による問題かまでは検証できません。 よろしくお願いします。
メンテ
Re: DX_MOVIEPLAYTYPE_BCANCELの有効範囲 ( No.3 )
名前:管理人 日時:2019/09/12 23:46

Bluetooth接続によるキーボード全てかどうかは分かりませんが、少なくとも DARTSLIVE-200S というデバイスは CheckHitKeyAll などで使用しているキーの押下状態( 押しているかどうか )の取得には対応していないようです 恐らくダーツが当たった瞬間に文字入力の信号を送るだけの仕組みになっているのだと思います ( GetInputChar では押下状態とは別口の、入力された文字を取得する処理が行われています ) PlayMovie の再生タイプに DX_MOVIEPLAYTYPE_BCANCEL が指定された場合の入力のチェックに CheckHitKeyAll 以外に GetInputChar での文字入力にも対応してみましたので、よろしければお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: DX_MOVIEPLAYTYPE_BCANCELの有効範囲 ( No.4 )
名前:was-blue.0793(解決) 日時:2019/09/13 22:04

テスト版ライブラリを適用したところ、DARTSLIVE-200Sの入力で確実にムービーが停止されることを確認しました。 ご対応ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存