细节优化
This commit is contained in:
		
							parent
							
								
									b7c4c409cb
								
							
						
					
					
						commit
						95392c19c3
					
				|  | @ -1,10 +1,8 @@ | ||||||
| #include "..\e2dcommon.h" | #include "..\e2dcommon.h" | ||||||
| #include "..\e2dbase.h" | #include "..\e2dbase.h" | ||||||
| #include "..\e2dtool.h" | #include "..\e2dtool.h" | ||||||
| #include <map> |  | ||||||
| 
 |  | ||||||
| static std::map<e2d::Resource, ID2D1Bitmap*> s_mBitmapsFromResource; |  | ||||||
| 
 | 
 | ||||||
|  | std::map<e2d::Resource, ID2D1Bitmap*> e2d::Image::_bitmapCache; | ||||||
| 
 | 
 | ||||||
| e2d::Image::Image() | e2d::Image::Image() | ||||||
| 	: _bitmap(nullptr) | 	: _bitmap(nullptr) | ||||||
|  | @ -62,7 +60,7 @@ bool e2d::Image::open(const Resource& res) | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	this->_setBitmap(s_mBitmapsFromResource.at(res)); | 	this->_setBitmap(_bitmapCache.at(res)); | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -150,7 +148,7 @@ e2d::Point e2d::Image::getCropPos() const | ||||||
| 
 | 
 | ||||||
| bool e2d::Image::preload(const Resource& res) | bool e2d::Image::preload(const Resource& res) | ||||||
| { | { | ||||||
| 	if (s_mBitmapsFromResource.find(res) != s_mBitmapsFromResource.end()) | 	if (_bitmapCache.find(res) != _bitmapCache.end()) | ||||||
| 	{ | 	{ | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
|  | @ -284,7 +282,7 @@ bool e2d::Image::preload(const Resource& res) | ||||||
| 
 | 
 | ||||||
| 	if (SUCCEEDED(hr)) | 	if (SUCCEEDED(hr)) | ||||||
| 	{ | 	{ | ||||||
| 		s_mBitmapsFromResource.insert(std::make_pair(res, pBitmap)); | 		_bitmapCache.insert(std::make_pair(res, pBitmap)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// 释放相关资源
 | 	// 释放相关资源
 | ||||||
|  | @ -298,11 +296,11 @@ bool e2d::Image::preload(const Resource& res) | ||||||
| 
 | 
 | ||||||
| void e2d::Image::clearCache() | void e2d::Image::clearCache() | ||||||
| { | { | ||||||
| 	for (auto bitmap : s_mBitmapsFromResource) | 	for (auto bitmap : _bitmapCache) | ||||||
| 	{ | 	{ | ||||||
| 		SafeRelease(bitmap.second); | 		SafeRelease(bitmap.second); | ||||||
| 	} | 	} | ||||||
| 	s_mBitmapsFromResource.clear(); | 	_bitmapCache.clear(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Image::_setBitmap(ID2D1Bitmap * bitmap) | void e2d::Image::_setBitmap(ID2D1Bitmap * bitmap) | ||||||
|  |  | ||||||
|  | @ -13,9 +13,9 @@ e2d::Player::Player() | ||||||
| 
 | 
 | ||||||
| e2d::Player::~Player() | e2d::Player::~Player() | ||||||
| { | { | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 		GC::release(pair.second); | 		GC::release(pair.second); | ||||||
| 	_resList.clear(); | 	_musicList.clear(); | ||||||
| 
 | 
 | ||||||
| 	if (_masteringVoice) | 	if (_masteringVoice) | ||||||
| 		_masteringVoice->DestroyVoice(); | 		_masteringVoice->DestroyVoice(); | ||||||
|  | @ -65,7 +65,7 @@ bool e2d::Player::preload(const String& filePath) | ||||||
| 
 | 
 | ||||||
| bool e2d::Player::preload(const Resource& res) | bool e2d::Player::preload(const Resource& res) | ||||||
| { | { | ||||||
| 	if (_resList.end() != _resList.find(res)) | 	if (_musicList.end() != _musicList.find(res)) | ||||||
| 		return true; | 		return true; | ||||||
| 
 | 
 | ||||||
| 	Music * music = new (e2d::autorelease) Music(); | 	Music * music = new (e2d::autorelease) Music(); | ||||||
|  | @ -74,7 +74,7 @@ bool e2d::Player::preload(const Resource& res) | ||||||
| 	{ | 	{ | ||||||
| 		GC::retain(music); | 		GC::retain(music); | ||||||
| 		music->setVolume(_volume); | 		music->setVolume(_volume); | ||||||
| 		_resList.insert(std::make_pair(res, music)); | 		_musicList.insert(std::make_pair(res, music)); | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| 	return false; | 	return false; | ||||||
|  | @ -92,7 +92,7 @@ bool e2d::Player::play(const Resource& res, int nLoopCount) | ||||||
| { | { | ||||||
| 	if (Player::preload(res)) | 	if (Player::preload(res)) | ||||||
| 	{ | 	{ | ||||||
| 		auto music = _resList[res]; | 		auto music = _musicList[res]; | ||||||
| 		if (music->play(nLoopCount)) | 		if (music->play(nLoopCount)) | ||||||
| 		{ | 		{ | ||||||
| 			return true; | 			return true; | ||||||
|  | @ -111,8 +111,8 @@ void e2d::Player::pause(const String& filePath) | ||||||
| 
 | 
 | ||||||
| void e2d::Player::pause(const Resource& res) | void e2d::Player::pause(const Resource& res) | ||||||
| { | { | ||||||
| 	if (_resList.end() != _resList.find(res)) | 	if (_musicList.end() != _musicList.find(res)) | ||||||
| 		_resList[res]->pause(); | 		_musicList[res]->pause(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Player::resume(const String& filePath) | void e2d::Player::resume(const String& filePath) | ||||||
|  | @ -125,8 +125,8 @@ void e2d::Player::resume(const String& filePath) | ||||||
| 
 | 
 | ||||||
| void e2d::Player::resume(const Resource& res) | void e2d::Player::resume(const Resource& res) | ||||||
| { | { | ||||||
| 	if (_resList.end() != _resList.find(res)) | 	if (_musicList.end() != _musicList.find(res)) | ||||||
| 		_resList[res]->pause(); | 		_musicList[res]->pause(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Player::stop(const String& filePath) | void e2d::Player::stop(const String& filePath) | ||||||
|  | @ -143,8 +143,8 @@ void e2d::Player::stop(const Resource& res) | ||||||
| 	{ | 	{ | ||||||
| 
 | 
 | ||||||
| 	} | 	} | ||||||
| 	if (_resList.end() != _resList.find(res)) | 	if (_musicList.end() != _musicList.find(res)) | ||||||
| 		_resList[res]->stop(); | 		_musicList[res]->stop(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool e2d::Player::isPlaying(const String& filePath) | bool e2d::Player::isPlaying(const String& filePath) | ||||||
|  | @ -157,8 +157,8 @@ bool e2d::Player::isPlaying(const String& filePath) | ||||||
| 
 | 
 | ||||||
| bool e2d::Player::isPlaying(const Resource& res) | bool e2d::Player::isPlaying(const Resource& res) | ||||||
| { | { | ||||||
| 	if (_resList.end() != _resList.find(res)) | 	if (_musicList.end() != _musicList.find(res)) | ||||||
| 		return _resList[res]->isPlaying(); | 		return _musicList[res]->isPlaying(); | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -170,7 +170,7 @@ double e2d::Player::getVolume() | ||||||
| void e2d::Player::setVolume(double volume) | void e2d::Player::setVolume(double volume) | ||||||
| { | { | ||||||
| 	_volume = std::min(std::max(float(volume), -224.f), 224.f); | 	_volume = std::min(std::max(float(volume), -224.f), 224.f); | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 	{ | 	{ | ||||||
| 		pair.second->setVolume(_volume); | 		pair.second->setVolume(_volume); | ||||||
| 	} | 	} | ||||||
|  | @ -178,7 +178,7 @@ void e2d::Player::setVolume(double volume) | ||||||
| 
 | 
 | ||||||
| void e2d::Player::pauseAll() | void e2d::Player::pauseAll() | ||||||
| { | { | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 	{ | 	{ | ||||||
| 		pair.second->pause(); | 		pair.second->pause(); | ||||||
| 	} | 	} | ||||||
|  | @ -186,7 +186,7 @@ void e2d::Player::pauseAll() | ||||||
| 
 | 
 | ||||||
| void e2d::Player::resumeAll() | void e2d::Player::resumeAll() | ||||||
| { | { | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 	{ | 	{ | ||||||
| 		pair.second->resume(); | 		pair.second->resume(); | ||||||
| 	} | 	} | ||||||
|  | @ -194,7 +194,7 @@ void e2d::Player::resumeAll() | ||||||
| 
 | 
 | ||||||
| void e2d::Player::stopAll() | void e2d::Player::stopAll() | ||||||
| { | { | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 	{ | 	{ | ||||||
| 		pair.second->stop(); | 		pair.second->stop(); | ||||||
| 	} | 	} | ||||||
|  | @ -202,9 +202,9 @@ void e2d::Player::stopAll() | ||||||
| 
 | 
 | ||||||
| void e2d::Player::clearCache() | void e2d::Player::clearCache() | ||||||
| { | { | ||||||
| 	for (auto pair : _resList) | 	for (auto pair : _musicList) | ||||||
| 	{ | 	{ | ||||||
| 		GC::release(pair.second); | 		GC::release(pair.second); | ||||||
| 	} | 	} | ||||||
| 	_resList.clear(); | 	_musicList.clear(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -552,10 +552,10 @@ public: | ||||||
| 	bool operator<= (const Resource &) const; | 	bool operator<= (const Resource &) const; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	bool _isResource; | 	bool	_isResource; | ||||||
| 	String _fileName; | 	int		_resNameId; | ||||||
| 	int _resNameId; | 	String	_resType; | ||||||
| 	String _resType; | 	String	_fileName; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -675,6 +675,8 @@ protected: | ||||||
| protected: | protected: | ||||||
| 	Rect _cropRect; | 	Rect _cropRect; | ||||||
| 	ID2D1Bitmap * _bitmap; | 	ID2D1Bitmap * _bitmap; | ||||||
|  | 
 | ||||||
|  | 	static std::map<Resource, ID2D1Bitmap*> _bitmapCache; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -253,7 +253,7 @@ private: | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
| 	float					_volume; | 	float					_volume; | ||||||
| 	MusicMap				_resList; | 	MusicMap				_musicList; | ||||||
| 	IXAudio2*				_xAudio2; | 	IXAudio2*				_xAudio2; | ||||||
| 	IXAudio2MasteringVoice*	_masteringVoice; | 	IXAudio2MasteringVoice*	_masteringVoice; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue