void CommonImageCacheManager::pushImage(CAImage* image) { CC_RETURN_IF(m_dImageQueue.contains(image)); m_dImageQueue.pushBack(image); CCArray* array = CCArray::create(); array->addObject(CCDelayTime::create(10)); array->addObject(CCCallFunc::create(this, callfunc_selector(CommonImageCacheManager::update))); this->runAction(CCSequence::create(array)); }
void CommonImageCacheManager::pushImage(CAImage* image) { CC_RETURN_IF(m_dImageQueue.contains(image)); m_dImageQueue.pushBack(image); CAViewAnimation::beginAnimations("", NULL); CAViewAnimation::setAnimationDuration(10); CAViewAnimation::setAnimationDidStopSelector(this, CAViewAnimation0_selector(CommonImageCacheManager::update)); CAViewAnimation::commitAnimations(); }
void unschedule(SEL_CAAnimation selector, CAObject* target) { for (CADeque<Animation*>::iterator itr=_deque.begin(); itr!=_deque.end(); itr++) { Animation* obj = *itr; if (obj->m_obInfo.selector == selector && obj->m_obInfo.target == target) { CAScheduler::unscheduleAllForTarget(obj); _deque.erase(itr); break; } } }
bool isSchedule(SEL_CAAnimation selector, CAObject* target) { bool ret = false; for (CADeque<Animation*>::iterator itr=_deque.begin(); itr!=_deque.end(); itr++) { Animation* obj = *itr; if (obj->m_obInfo.selector == selector && obj->m_obInfo.target == target) { ret = true; break; } } return ret; }
void Animation::update(float dt) { if (m_obInfo.now >= m_obInfo.total) { _deque.eraseObject(this); return; } if (m_obInfo.delay > 0) { m_obInfo.delay -= dt; return; } if (m_obInfo.delay < 0) { dt += m_obInfo.delay; m_obInfo.delay = 0.0f; } m_obInfo.interval = dt; m_obInfo.now += dt; m_obInfo.now = MIN(m_obInfo.now, m_obInfo.total); if (m_obInfo.target && m_obInfo.selector) { ((CAObject *)m_obInfo.target->*m_obInfo.selector)(m_obInfo.interval, m_obInfo.now, m_obInfo.total); } }
void schedule(SEL_CAAnimation selector, CAObject* target, float totalTime, float interval, float delay) { CC_RETURN_IF(isSchedule(selector, target)); Animation* obj = new Animation(); _deque.pushBack(obj); obj->startAnimation(selector, target, totalTime, interval, delay); obj->release(); }
void CommonImageCacheManager::removeImage(CAImage* image) { m_dImageQueue.eraseObject(image); }
void CommonImageCacheManager::update() { CAImageCache::sharedImageCache()->removeImage(m_dImageQueue.front()); m_dImageQueue.popFront(); }