funcode 音乐播放、提示及提示消失、时间显示等(c++版)
一、音乐播放:
先在 LessonX.cpp 中加入头文件:
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
再在想播放的地方加上:
PlaySound("game/data/audio/fate.wav",NULL,SND_FILENAME|SND_ASYNC );//音乐要循环的话还需在第三个参数后加上 |SND_LOOP
"game/data/audio/fate.wav"为添加音乐的位置,"fate"为自定义的音乐名称,可在funcode界面添加音乐中找到。注意音乐的格式,.ogg或 .wav。
(这种方法在另一段音乐播放时会打断当前音乐的播放,不太适合作为背景音乐,比较适合用来做物品拾取、敌人消灭音效等)
另一种方式:(不打断音乐,适合用来做背景音乐)
加入相同的头文件,再在想播放的地方加上:
mciSendString(TEXT("open C:/tmp//fate.wav"),NULL,NULL, NULL); //打开音乐文件
mciSendString(TEXT("play C:/tmp//fate.wav"),NULL,NULL,NULL); //播放音乐文件
mciSendString(TEXT("close C:/tmp//fate.wav"),NULL,NULL, NULL); //关闭音乐
C:/tmp//fate.wav 为音乐文件的位置,需往相应位置添加对应音乐
二、提示及提示消失:
先导入几张图片、命名,再在程序中进行下列操作:
首先是精灵的定义:
LessonX.h
class CGameMain
CSprite* m_ptip;//提示精灵
CSprite* m_ptiptext;//提示文本精灵
CSprite* m_pclose;//关闭精灵
LessonX.cpp
CGameMain::CGameMain()
m_ptiptext =new CSprite("tiptext");//提示文本精灵
m_ptip=new CSprite("tip");//提示精灵
m_pclose=new CSprite("close");//关闭精灵
//" "双引号内名称在funcode界面精灵编辑按键中的“程序接口”设置
再选择想让提示显示、消失的方式如(在OnMouseClick函数中):
void CGameMain::OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY
//提示
if(iMouseType==0&&(fMouseX>=17&&fMouseX<=25)&&(fMouseY>=-36&&fMouseY<=-32))//中心点(21,--34) 宽为8,高为4
{
m_pclose->SetSpriteVisible(true); //调用SetSpriteVisible控制精灵的可见性
m_ptiptext->SetSpriteVisible(true); //true 为可见,false为不可见
}
//关闭
if(iMouseType==0&&(fMouseX>=18&&fMouseX<=26)&&(fMouseY>=20&&fMouwdaseY<=28))//中心点(22,24) 宽为8 高为8
{
m_ptiptext->SetSpriteVisible(false);
m_pcontinue->SetSpriteVisible(false);
}
注意事项:
可选:在funcode界面把图形设为不可见,可使图形一开始就不可见,需要时再使其可见
文本位置需要根据实际修改,funcode的位置判断为精灵中心点判断。根据精灵的X、Y位置及精灵的宽和高可以定位精灵的范围
关闭键可多次利用:一次关多个图片——如切换关卡的文本等
三、时间显示
先导入几张图片、命名,再在程序中进行下列操作:
首先是精灵的定义:
LessonX.h
class CGameMain
CTextSprite* m_pTime; //显示时间文字编辑精灵
CSprite* m_pTimepicture;//时间文本图片精灵
float m_fGameTime; // 本局游戏时间
LessonX.cpp
CGameMain::CGameMain()
m_pTime =new CTextSprite("Time"); //显示时间文字编辑精灵
m_pTimepicture=new CSprite("Timepicture"); //显示时间文本图片精灵
m_fGameTime=0.f;//给时间赋初值
其次是时间文本精灵的实时变换:
void CGameMain::GameRun( float fDeltaTime )
{
m_fGameTime -= fDeltaTime; //时间减少
m_pTime->SetTextValue((int)m_fGameTime); //时间显示
}
void CGameMain::OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )
{
if( KEY_SPACE == iKey && 0 == m_iGameState )
{
m_fGameTime = 30.f; //游戏时间赋值
m_pKaishi->SetSpriteVisible(false);// 隐藏游戏开始图片
CSystem::ShowCursor(false); // 隐藏鼠标
}
}