细节调整
This commit is contained in:
parent
2c13083c09
commit
012c7aad50
|
|
@ -122,10 +122,10 @@ e2d::Animate * e2d::Animate::reverse() const
|
|||
}
|
||||
|
||||
auto animation = new (std::nothrow) Animation(_animation->getInterval(), frames);
|
||||
return new (std::nothrow) Animate(animation);
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
if (animation)
|
||||
{
|
||||
return new (std::nothrow) Animate(animation);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,9 +170,9 @@ void e2d::Game::resume()
|
|||
{
|
||||
if (s_bInitialized && s_bPaused)
|
||||
{
|
||||
s_bPaused = false;
|
||||
Game::reset();
|
||||
}
|
||||
s_bPaused = false;
|
||||
}
|
||||
|
||||
void e2d::Game::reset()
|
||||
|
|
|
|||
|
|
@ -1,31 +1,33 @@
|
|||
#include "..\e2dbase.h"
|
||||
#include "..\e2dmanager.h"
|
||||
|
||||
|
||||
e2d::Object::Object()
|
||||
: _refCount(0)
|
||||
{
|
||||
ObjectManager::__add(this);
|
||||
}
|
||||
|
||||
e2d::Object::~Object()
|
||||
{
|
||||
}
|
||||
|
||||
// 引用计数加一
|
||||
void e2d::Object::autorelease()
|
||||
{
|
||||
ObjectManager::__add(this);
|
||||
}
|
||||
|
||||
void e2d::Object::retain()
|
||||
{
|
||||
++_refCount;
|
||||
}
|
||||
|
||||
// 引用计数减一
|
||||
void e2d::Object::release()
|
||||
{
|
||||
_refCount--;
|
||||
// 通知对象管理池刷新
|
||||
ObjectManager::flush();
|
||||
}
|
||||
|
||||
int e2d::Object::getRefCount() const
|
||||
{
|
||||
return _refCount;
|
||||
}
|
||||
}
|
||||
|
|
@ -5,10 +5,18 @@
|
|||
e2d::Scene::Scene()
|
||||
: _autoUpdate(true)
|
||||
, _colliderVisiable(false)
|
||||
, _root(new Node())
|
||||
, _root(nullptr)
|
||||
{
|
||||
_root->retain();
|
||||
_root->_setParentScene(this);
|
||||
_root = new (std::nothrow) Node();
|
||||
if (_root)
|
||||
{
|
||||
_root->retain();
|
||||
_root->_setParentScene(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: 抛出一个异常
|
||||
}
|
||||
}
|
||||
|
||||
e2d::Scene::~Scene()
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ void e2d::ColliderManager::__updateCollider(e2d::Collider * pActiveCollider)
|
|||
|
||||
void e2d::ColliderManager::add(const Function& func, const String& name, bool paused)
|
||||
{
|
||||
auto listener = new Listener(func, name, paused);
|
||||
auto listener = new (std::nothrow) Listener(func, name, paused);
|
||||
s_vListeners.push_back(listener);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ static std::vector<Listener*> s_vListeners;
|
|||
|
||||
void e2d::InputManager::add(const Function& func, const String& name, bool paused)
|
||||
{
|
||||
auto listener = new Listener(func, name, paused);
|
||||
auto listener = new (std::nothrow) Listener(func, name, paused);
|
||||
s_vListeners.push_back(listener);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,7 @@ e2d::Node::Node()
|
|||
{
|
||||
if (s_fDefaultColliderEnabled)
|
||||
{
|
||||
auto rect = new ColliderRect(this);
|
||||
this->setCollider(rect);
|
||||
this->setCollider(new ColliderRect(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -548,22 +547,19 @@ void e2d::Node::setCollider(ColliderType nColliderType)
|
|||
{
|
||||
case ColliderType::RECT:
|
||||
{
|
||||
auto rect = new ColliderRect(this);
|
||||
this->setCollider(rect);
|
||||
this->setCollider(new ColliderRect(this));
|
||||
break;
|
||||
}
|
||||
|
||||
case ColliderType::CIRCLE:
|
||||
{
|
||||
auto rect = new ColliderCircle(this);
|
||||
this->setCollider(rect);
|
||||
this->setCollider(new ColliderCircle(this));
|
||||
break;
|
||||
}
|
||||
|
||||
case ColliderType::ELLIPSE:
|
||||
{
|
||||
auto rect = new ColliderEllipse(this);
|
||||
this->setCollider(rect);
|
||||
this->setCollider(new ColliderEllipse(this));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ bool MusicPlayer::open(const e2d::String& filePath)
|
|||
_dwSize = _ck.cksize;
|
||||
|
||||
// 将样本数据读取到内存中
|
||||
_pbWaveData = new BYTE[_dwSize];
|
||||
_pbWaveData = new (std::nothrow) BYTE[_dwSize];
|
||||
|
||||
if (!_read(_pbWaveData, _dwSize))
|
||||
{
|
||||
|
|
@ -226,7 +226,7 @@ bool MusicPlayer::open(int resNameId, const e2d::String& resType)
|
|||
if (nullptr == (pvRes = LockResource(hResData)))
|
||||
return TraceError(L"LockResource");
|
||||
|
||||
_pResourceBuffer = new CHAR[dwSize];
|
||||
_pResourceBuffer = new (std::nothrow) CHAR[dwSize];
|
||||
memcpy(_pResourceBuffer, pvRes, dwSize);
|
||||
|
||||
MMIOINFO mmioInfo;
|
||||
|
|
@ -251,7 +251,7 @@ bool MusicPlayer::open(int resNameId, const e2d::String& resType)
|
|||
_dwSize = _ck.cksize;
|
||||
|
||||
// Read the sample data into memory
|
||||
_pbWaveData = new BYTE[_dwSize];
|
||||
_pbWaveData = new (std::nothrow) BYTE[_dwSize];
|
||||
|
||||
if (!_read(_pbWaveData, _dwSize))
|
||||
{
|
||||
|
|
@ -442,7 +442,7 @@ bool MusicPlayer::_readMMIO()
|
|||
// 的数据,这个数据就是额外分配的大小
|
||||
if (pcmWaveFormat.wf.wFormatTag == WAVE_FORMAT_PCM)
|
||||
{
|
||||
_pwfx = (WAVEFORMATEX*)new CHAR[sizeof(WAVEFORMATEX)];
|
||||
_pwfx = (WAVEFORMATEX*)new (std::nothrow) CHAR[sizeof(WAVEFORMATEX)];
|
||||
|
||||
// 拷贝数据
|
||||
memcpy(_pwfx, &pcmWaveFormat, sizeof(pcmWaveFormat));
|
||||
|
|
@ -455,7 +455,7 @@ bool MusicPlayer::_readMMIO()
|
|||
if (mmioRead(_hmmio, (CHAR*)&cbExtraBytes, sizeof(WORD)) != sizeof(WORD))
|
||||
return TraceError(L"mmioRead");
|
||||
|
||||
_pwfx = (WAVEFORMATEX*)new CHAR[sizeof(WAVEFORMATEX) + cbExtraBytes];
|
||||
_pwfx = (WAVEFORMATEX*)new (std::nothrow) CHAR[sizeof(WAVEFORMATEX) + cbExtraBytes];
|
||||
|
||||
// 拷贝数据
|
||||
memcpy(_pwfx, &pcmWaveFormat, sizeof(pcmWaveFormat));
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ static std::vector<TimerInfo*> s_vTimers;
|
|||
|
||||
void e2d::Timer::start(const Function& func, double delay, int updateTimes, bool paused, const String& name)
|
||||
{
|
||||
auto timer = new TimerInfo(func, name, delay, updateTimes, paused);
|
||||
auto timer = new (std::nothrow) TimerInfo(func, name, delay, updateTimes, paused);
|
||||
s_vTimers.push_back(timer);
|
||||
}
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ void e2d::Timer::start(const Function& func, const String& name)
|
|||
|
||||
void e2d::Timer::startOnce(const Function& func, double timeOut)
|
||||
{
|
||||
auto timer = new TimerInfo(func, L"", timeOut, 1, false);
|
||||
auto timer = new (std::nothrow) TimerInfo(func, L"", timeOut, 1, false);
|
||||
s_vTimers.push_back(timer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
#pragma once
|
||||
#include "e2dmacros.h"
|
||||
#include "e2dcustom.h"
|
||||
#include <set>
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
#include <sstream>
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
|
|
@ -583,6 +578,9 @@ public:
|
|||
|
||||
virtual ~Object();
|
||||
|
||||
// 自动释放
|
||||
void autorelease();
|
||||
|
||||
// 引用计数加一
|
||||
void retain();
|
||||
|
||||
|
|
@ -881,8 +879,8 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
template<typename Object>
|
||||
inline void SafeRelease(Object*& p)
|
||||
template <class Type>
|
||||
inline void SafeRelease(Type*& p)
|
||||
{
|
||||
if (p != nullptr)
|
||||
{
|
||||
|
|
@ -891,4 +889,5 @@ inline void SafeRelease(Object*& p)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -38,9 +38,14 @@
|
|||
#include <d2d1helper.h>
|
||||
#include <xaudio2.h>
|
||||
|
||||
// C RunTime Header Files
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
// C++ RunTime Header Files
|
||||
#include <set>
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
#include <sstream>
|
||||
#include <random>
|
||||
#include <utility>
|
||||
|
||||
// Import Libraries
|
||||
#pragma comment(lib, "d2d1.lib")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
#include "e2dbase.h"
|
||||
#include <random>
|
||||
|
||||
namespace e2d
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue