메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

 MIDI 음악을 메인 루프 앞에서 재생시킨 후
 다른 음악을 재생시키려고 했더니 그 다음부턴 음악이 정지만 하고 재생이 되지를 않네요.
예전에 배고파요 만들었을 때는 비슷하게 해도 별 문제가 없었던 것 같은데, 왜 이러는지 잘 모르겠습니다.

void bgm(int flag)
{
 _MidiStop();
 if(flag == 0){
  _MidiPlay("title.mid", true);
 }else if(flag == 1){
  _MidiPlay("goor.mid", false);
 }
}

int main(char* arg[])
{
 //창 생성
 if(!MainInitialize("미시세계의 아름다움", TRUE, FALSE, false))return 0;

 //윈도우창 이동
 if(window_mode)
 {
  jdd->OnMove(100, 100);
  SetCursor(LoadCursor(0, IDC_ARROW));
 }
 JPictureInfo jpi;
 jpi.SetColorKey(JColor(0,0,255));

 jdd->LoadPicture("title", "title.bmp", &jpi, true);
 jdd->LoadPicture("bg", "bg.bmp", &jpi, true);

 int state = 0;
 bgm(state);
 //메인 실행
 while(!GetKey(vkey_esc))
 {
  if(!ProcessMessage())break;
  if(state == 0){
   jdd->DrawPicture(backbuffer, "title", 0, 0, NULL);
   if(GetKey(vkey_enter)){
    state++;
   }
  }else if(state == 1){
   bgm(state);
   state++;
  }else if(state == 2){
   jdd->DrawPicture(backbuffer, "bg", 0, 0, NULL);
  }
  jdd->Render();
 }


조회 수 :
2490
등록일 :
2008.05.16
08:54:29 (*.234.216.51)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=199521

똥똥배

2008.05.16
18:08:31
(*.239.144.2)
Midi 관련 명령은 Mci에 메시지를 보내서 음악을 재생하거나 정지하는 방식이라서
MidiStop이든 MidiPlay든 그 순간 명령이 먹히는 것이 아니라
명령이 들어간 후 다음 번의 ProcessMessage() 에서 명령이 처리됩니다.
즉, MidiStop() 뒤에 if(ProcessMessage())return; 을 넣어주시거나
state==1 에서 스톱 시키고 state==2에서 재생하고, 현재 state==2는 state==3으로 바꾸시는 방법이 있습니다.

대슬

2008.05.16
20:19:05
(*.132.163.161)

그렇군요. 감사합니다.

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
65 [Lua] 테이블 노루발 1422   2013-09-17 2013-09-17 08:13
이것은 Lua 문법입니다. Love2D와는 관계가 없습니다.  안녕하세요, 노루발입니다. 오늘은 테이블에 대해서 설명을 해보겠습니다.   테이블이란 쉽게 말해 변수를 묶은 겁니다. Lua상에서 뭔가 쌈빡하게 테이블을 쓰는 법도 있는 듯 하지만 저는 그냥 타 언어...  
64 중력 처리할때 캐릭터가 낍니다. [2] ㅁㄴㅇㄹ 1395   2012-02-12 2012-02-13 00:59
플랫폼 게임에서 중력 처리시 발판과 캐릭터가 충돌하면 더 이상 캐릭터가 밑으로 떨어지지 않게 했습니다. 그런데 캐릭터와 발판이 정상적이지 않게 충돌할 경우(점프했을 때 머리와 발판이 충돌한다던가) 캐릭터가 발판에 낍니다. 어떻게 발판의 처리를 다르...  
63 Lua 소코반 EX: 그래픽 준비 노루발 1084   2013-09-18 2013-09-18 08:00
안녕하세요, 노루발입니다. 얼마 전 만든 Lua 소코반을 게임다운 게임을 만들기 위해 그래픽을 씌워보려고 합니다. 저번에 한 Love2D로 살펴본 뭐가 뭔지 모르는 복잡한 그리기 함수들도 사실은 모두가 소코반을 그래픽으로 만들기 위한 훼이크였습니다. 후후....  
62 혼돈형한테 질문 (페인트샾 관련) [2] file 장펭돌 939   2007-11-19 2008-03-17 04:37
 
61 RPG Maker MV 로컬라이징 방법 file 똥똥배 926   2015-10-27 2015-10-27 05:51
 
60 Lua 소코반 EX: 포팅: 3 (머나먼 여행길 안녕 친구여) 노루발 913   2013-09-18 2013-09-18 08:05
안녕하세요, 노루발입니다. 오늘로 그래픽 소코반을 끝내기로 했습니다. 아쉽지만 끝내야죠. 일단 걸음수와 이것저것을 뿌려주기로 합니다. 그런데 이미 화면이 꽉 차버려서 뿌려줄 공간이 없네요... 없으면 만들면 되지. 창을 늘립시다. conf.lua를 수정. fun...  
59 Lua 소코반 EX: 포팅: 1 노루발 856   2013-09-18 2013-09-18 08:03
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 박스 목표 지점의 위치를 저장하는 배열. goal = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의...  
58 Lua 소코반: 맵을 뿌리자. 노루발 833   2013-09-17 2013-09-17 08:29
-- 맵 데이터를 저장하는 8*8의 2차원 배열 Map 생성 map = {} for a = 1, 8 do     map[a] = {}     for b = 1, 8 do         map[a][b] = 0     end end -- 맵 데이터 초기화 map[1][1] = 1 map[1][2] = 1 map[1][3] = 1 map[1][4] = 1 map[1][5] = 1 map[1]...  
57 Lua 소코반 EX: 포팅: 2 (키가 눌리면 이동하게 해 보자) 노루발 832   2013-09-18 2013-09-18 08:04
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 박스 목표 지점의 위치를 저장하는 배열. goal = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의...  
56 이미지 그리는 방법: 2편. 부제: 쿼드! 노루발 821   2013-09-17 2013-09-17 08:37
(역시 이미지가 중요한 글인데 이미지가 모두 잘렸습니다. 문화재 손실에 슬픔을 표합니다.) Quad에 대해 알아본댔습니다. 쿼드? 쿼드가 뭐지? 생소한 개념인데? 하나의 큰 그림을 로드해서 쪼개서 쓰는 겁니다. 타일 깔듯이요. 우리가 포켓몬스터 같은 걸 하...  
55 이미지 그리는 방법 1편 노루발 812   2013-09-17 2013-09-17 08:35
이미지가 중요한 글인데 이미지가 다 짤렸네요. 압박. 준비물은 일단 이미지입니다. 예제 이미지로 럭키♥를 준비했습니다. 럭키! 럭키! 럭키! 와아아아! 어쨌든 이 럭키를 가지고 예제를 진행하겠습니다! 와아아! 글쓸 맛 난다! 일단 Love2D에서 뭔가 그린다는...  
54 cocos2d-x 2.2.2 UILabelBMFont 메모리 누수 해결법 [2] 똥똥배 783   2014-03-10 2014-05-31 19:30
만약 CocoStudio로 UI를 만든 후 GUIReader를 써서 지정 폰트를 불러오면 엔진 버그로 인해서 메모리 누수가 생긴다. 이걸 고치려면 LabelBMFont.cpp를 아래와 같이 수정해야 한다. void LabelBMFont::setFntFile(const char *fileName) { if (!fileName || st...  
53 Cocostudio의 ActionNode 메모리 누수 해결법(cocos2d-x 2.2.2) [2] 똥똥배 776   2014-03-09 2014-05-31 19:26
Cocostudio로 액션을 만들고 액션매니저를 이용해서 ActionManager::shareManager()->playActionByName 아래와 같이 실행을 해주면 액션이 실행되는 경우 메모리 누수가 발생한다. (액션을 실행하지 않았을 때는 메모리 누수 없음) 이 메모리 누수를 없애려면 ...  
52 게임의 기본 설정을 담당하는 love.conf 노루발 763   2013-09-17 2013-09-17 08:39
안녕하세요, 노루발입니다. 여태까지 이것저것 많이 Love2D를 다뤄와서 제가 만든 소코반에 그래픽을 씌울 수준까지 되었지만 (물론 키 입력은 논외로 치죠, 나중에 다룰게요.) 아직 이걸로 정식 게임을 만든다면 모자라도 한참 모자랍니다. 창의 이름도 실행...  
51 Lua 소코반: 플레이어를 그리고 움직이게 해보자 노루발 758   2013-09-17 2013-09-17 08:30
오늘자 전체 코드입니다. 어제처럼 바뀐 부분만 설명해 봅니다. -- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의 2차원 배열 Map 생성 map = {} for...  
50 Lua 소코반: 목표 지점을 만들고, 상자가 모두 옮겨지면 게임을 끝내자! 노루발 754   2013-09-17 2013-09-17 08:33
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 박스 목표 지점의 위치를 저장하는 배열. goal = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의...  
49 흥크립트 원인불명 버그... [3] file 네모상자 738   2008-02-16 2008-03-17 04:37
 
48 Love2D를 사용하기 위한 Lua 강좌: 입출력과 기본 노루발 706   2013-09-17 2013-09-17 08:21
Love2D 엔진은 Lua 기반이라 좋던 싫던 우리는 이미 Lua를 쓰고 있는 것입니다. 그래서 원활한 개발을 원한다면 Lua 언어를 알아두는 것이 좋습니다. 어 차피 Lua라는 게 알아먹기 쉽고 가벼우므로 게임 업게에 종사하는 디자이너 혹은 작가, 게임 디자이너가 ...  
47 Lua 소코반: 벽을 뚫고 나가지 않게 해보자! 노루발 696   2013-09-17 2013-09-17 08:31
전체 코드입니다.슬슬 길어지니 요약글 기능이 필요해진달지.. -- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의 2차원 배열 Map 생성 map = {} for ...  
46 CCTextFieldTTF 0바이트 메모리 누수 버그 해결법 똥똥배 692   2014-01-13 2014-01-13 10:38
CCTextFieldTTF::textFieldWithPlaceHolder("", FONT_NAME, FONT_SIZE); 이런 식으로 텍스트필드를 생성하면 ""가 0바이트라서 해체를 못하고 0바이트 누수가 발생한다. 그냥 스페이스(" ")라도 넣어주면 누수는 발생하지 않는다. 이 버그가 발생하는 버전은 2...