/** @file JCResource.cpp @brief @author James @version 1.0 @date 2016_5_12 */ #include "JCResource.h" #include "JCResManager.h" namespace laya{ JCResStateDispatcher::JCResStateDispatcher() { m_nResState = getting; m_nErrNo = noError; } JCResource::JCResource() { m_pResManager = NULL; m_nUsedMem=0; m_nResSize =0; m_nTouch = 0; } JCResource::~JCResource() { if(m_pResManager && m_nUsedMem ) { m_pResManager->freeRes(this,true); } m_pResManager = NULL; } /* 注意:资源释放后再恢复,如果不做特殊处理,是不会再次出发onload的回调的。因为已经被删掉了。 */ void JCResStateDispatcher::setState( JCResource::ResState p_state ) { m_nResState = p_state; switch(p_state) { case getting: break; case ready: { swap(m_allOnReadyCB, m_tmpOnReadyCB); m_allOnReadyCB.clear(); m_allOnErrCB.clear(); int nNum = m_tmpOnReadyCB.size(); for (int i = 0; i < nNum; i++){ m_tmpOnReadyCB[i](this); } m_tmpOnReadyCB.clear(); } break; case error: { swap(m_allOnErrCB, m_tmpOnErrCB); m_allOnErrCB.clear(); m_allOnReadyCB.clear(); int nNum = m_tmpOnErrCB.size(); for( int i=0; itouchRes(this,p_bRestoreRes); } } void JCResource::setResSize(int sz) { if(sz==m_nResSize)return; m_nResSize = sz; if(m_pResManager){ m_pResManager->updateRes(this); } } } //------------------------------------------------------------------------------ //-----------------------------END FILE--------------------------------