dxライブラリのStopSoundMem()って、PlaySoundMem()を呼んだのと同じスコープでないと止まらないっぽい?
はい、以上です(´・ω・`)ショボーン
時間がないので一言。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
Re: 時間がないので一言。
DXライブラリは基本ピュアCスタイルで、グローバル変数ライクなので、どこで使っても有効ですよ。
RE: 時間がないので一言。
axisさんのいう「スコープ」の定義がわかりませんが、
直感的に考えて、(自分が思っている)スコープは関係ないと思いますし、
今回のテストでは再生と停止を別ファイルの別関数で行っても、きちんと動作しました。
とりあえず、DXライブラリを最新にしてみてはいかがですか?
main.cpp
saisei.cpp
teisi.cpp
環境
Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
Dev-C++ 5.7.1
GCC (MinGW) 4.8.1
DXライブラリ Ver3.13b
直感的に考えて、(自分が思っている)スコープは関係ないと思いますし、
今回のテストでは再生と停止を別ファイルの別関数で行っても、きちんと動作しました。
とりあえず、DXライブラリを最新にしてみてはいかがですか?
main.cpp
#include
void saisei(int a,int b);
void teisi(int a,int b);
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {
if(ChangeWindowMode(TRUE)!=DX_CHANGESCREEN_OK || DxLib_Init()==-1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
int s=LoadSoundMem("test.ogg");
int s1=s & 0x55555555;
int s2=s & 0xAAAAAAAA;
bool sFlag=false;
bool pFlag=false;
char Key[256];
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key) && !Key[KEY_INPUT_ESCAPE]) {
if(Key[KEY_INPUT_S]) {
if(!sFlag)saisei(s1, s2);
sFlag=true;
} else sFlag=false;
if(Key[KEY_INPUT_P]) {
if(!pFlag)teisi(s2, s1);
pFlag=true;
} else pFlag=false;
DrawString(10, 10, "Sで再生", GetColor(255, 255, 255));
DrawString(10, 50, "Pで停止", GetColor(255, 255, 255));
ScreenFlip();
}
DxLib_End();
return 0;
}
Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
Dev-C++ 5.7.1
GCC (MinGW) 4.8.1
DXライブラリ Ver3.13b
- 添付ファイル
-
[拡張子 zip は無効化されているため、表示できません]
Re: 時間がないので一言。
なるほど・・・
機能をオフにしてサイズをけずって居るバージョン
の影響かもしれないですね
機能をオフにしてサイズをけずって居るバージョン
の影響かもしれないですね