示例#1
0
Sound::Sound(int name, const QString& filename, QObject* parent) :
	QObject(parent),
	m_id(-1),
	m_name(name)
{
	if (!f_sdl_loaded) {
		loadSDL();
	}
	f_total_sounds++;

	if (f_ids.contains(filename)) {
		m_id = f_ids.value(filename);
	} else if (f_sdl_loaded) {
		MixChunk* chunk = mix_LoadWAV(QFile::encodeName(f_path + "/" + filename).constData());
		if (chunk == 0) {
			qWarning("Unable to load WAV file: %s", mix_GetError());
			return;
		}

		m_id = f_chunks.count();
		f_chunks.append(chunk);
		f_ids[filename] = m_id;
	}

	f_sound_objects[m_name] = this;
}
示例#2
0
void Sound::play(int name)
{
	if (f_enabled) {
		Sound* sound = f_sound_objects.value(name);
		if (sound && sound->isValid() && (mix_PlayChannel(-1, f_chunks.at(sound->m_id), 0) == -1)) {
			qWarning("Unable to play WAV file: %s", mix_GetError());
		}
	}
}
示例#3
0
void Sound::play()
{
	if (isValid() && (mix_PlayChannel(-1, f_chunks.at(m_id), 0) == -1)) {
		qWarning("Unable to play WAV file: %s", mix_GetError());
	}
}