细节调整

This commit is contained in:
Nomango 2018-05-15 23:59:58 +08:00
parent 2c13083c09
commit 012c7aad50
12 changed files with 51 additions and 42 deletions

View File

@ -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;
}

View File

@ -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()

View File

@ -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;
}
}

View File

@ -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()

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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));

View File

@ -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);
}

View File

@ -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)
}
}
}

View File

@ -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")

View File

@ -1,6 +1,5 @@
#pragma once
#include "e2dbase.h"
#include <random>
namespace e2d
{