void GafFeatures::prevSequence( cocos2d::Ref* ) { GAFAnimatedObject *object = (GAFAnimatedObject *)m_objects->getObjectAtIndex(0); m_currentSequence--; if (m_currentSequence < 0) { m_currentSequence = m_objectSequencesNames.size() - 1; } const char* secName = m_objectSequencesNames[m_currentSequence].c_str(); object->playSequence(secName, true); m_sequenceName->setString(secName); }
void GafFeatures::addObjectsToScene(int aCount) { if (!aCount) { return; } if (!_asset) { _asset = GAFAsset::create(_jsons[_anim_index]); CC_SAFE_RETAIN(_asset); } if (!_objects) { _objects = CCArray::create(); _objects->retain(); } if (_asset) { int initialCount = _objects->count(); for (int i = initialCount; i < initialCount + aCount; ++i) { GAFAnimatedObject *object = _asset->createObjectAndRun(true); object->setZOrder(100 * i); addChild(object); float s = CCDirector::sharedDirector()->getWinSize().height / 640; if (s > 1) s = 1; object->setScale(s); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); object->setPosition(winSize.width * (0.4 + 0.05 * i), winSize.height * 0.6); _objects->addObject(object); // will work only if animation has sequence object->playSequence("walk", true); } } }
void GafFeatures::addObjectsToScene() { if (!m_asset) { StartCounter(); m_asset = GAFAsset::create(m_files[m_anim_index], this); double loadingTime = GetCounter(); cocos2d::log("Loading time [%f]\n", loadingTime); std::ostringstream ss; ss << m_files[m_anim_index] << " "; ss << loadingTime; //m_loadingTimeLabel->setString(ss.str().c_str()); ss.str(""); ss << "VRAM: "; ss << m_asset->getTextureAtlas()->getMemoryConsumptionStat(); ss << " bytes"; m_vramStat->setString(ss.str()); CC_SAFE_RETAIN(m_asset); } if (!m_objects) { m_objects = cocos2d::__Array::create(); m_objects->retain(); } const cocos2d::Size size = cocos2d::Director::getInstance()->getWinSizeInPixels(); if (m_asset) { GAFAnimatedObject *object = m_asset->createObject(); object->setLocalZOrder(0); addChild(object); float scaleFactor = cocos2d::Director::getInstance()->getContentScaleFactor(); object->setPosition(centerScreenPosition(m_asset, size / scaleFactor)); m_objects->addObject(object); m_objectSequencesNames.clear(); #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS CocosDenshion::SimpleAudioEngine::getInstance()->stopAllEffects(); for(auto& effect : m_musicEffects) { CocosDenshion::SimpleAudioEngine::getInstance()->unloadEffect(effect.second.c_str()); } #endif m_musicEffects.clear(); const AnimationSequences_t& secDictionary = m_asset->getAnimationSequences(); if (!secDictionary.empty()) { for (AnimationSequences_t::const_iterator i = secDictionary.begin(), e = secDictionary.end(); i != e; ++i) { const std::string& seqName = i->first; std::string::size_type pos = seqName.find("__audio:"); if (pos != std::string::npos) { std::string effectName = seqName.substr(pos + 8) + ".wav"; #if CC_TARGET_PLATFORM == CC_PLATFORM_IOS CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect(effectName.c_str()); #endif m_musicEffects[i->second.startFrameNo] = std::move(effectName); } else { m_objectSequencesNames.push_back(i->first); } } } enableSequenceControllers(!m_objectSequencesNames.empty()); // will work only if animation has a sequence object->playSequence("walk", true); object->setLooped(true); object->start(); object->setSequenceDelegate(this); object->setFramePlayedDelegate(this); } }