Animate*Tower_Cuttle::getAttackAction() { string str = ""; switch (level) { case 1: { str = "Cuttle1"; }break; case 2: { str = "Cuttle2"; }break; case 3: { str = "Cuttle3"; }break; } auto ani = Animation::create(); //ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "1.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "2.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "3.png")); ani->setDelayPerUnit(0.05); ani->setRestoreOriginalFrame(true); ani->setLoops(1); auto an = Animate::create(ani); return an; }
void HeroFrog::initAnimation(){ for (int i=0; i<9; i++) { auto animationStatic = Animation::create(); for( int j=0;j<animationCount[i];j++) { char szName[100] = {0}; sprintf(szName, animaFrameName[i].c_str(), j); SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(szName); animationStatic->addSpriteFrame(frame); } // should last 2.8 seconds. And there are 14 frames. animationStatic->setDelayPerUnit(0.2f); animationStatic->setRestoreOriginalFrame(false); AnimationCache::getInstance()->addAnimation(animationStatic, animaName[i]); } setHeroStatus(frogStatic); }
Action *edcHeroLayer::setHeroAnim(char *aaname,int aaframes,float delayTime) { auto animation = Animation::create(); for( int i = 1; i <= aaframes ; i++) { char szName[100] = {0}; // sprintf(szName, "snake_chick_up_%04d.png", i); sprintf(szName,"%s%04d%s",aaname,i,".png"); // CCLOG("%s",szName); auto temp = Sprite::createWithSpriteFrameName(szName); animation->addSpriteFrame(temp->getSpriteFrame()); } // should last 0.6 seconds. And there are 4 frames. animation->setDelayPerUnit(delayTime / (float)(aaframes)); animation->setRestoreOriginalFrame(true); Action *temp = RepeatForever::create(Animate::create(animation)); return temp; }
void Monster_UI::runRocketBoomAction() { auto sprite_boom = Sprite::create(); sprite->addChild(sprite_boom); auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket02.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-11.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-12.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-13.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-14.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-15.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-16.png")); ani->setDelayPerUnit(0.05); ani->setRestoreOriginalFrame(false); ani->setLoops(-1); sprite_boom->runAction(Animate::create(ani)); sprite_boom->setVisible(true); sprite_boom->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height / 2); sprite_boom->runAction(Sequence::create(DelayTime::create(0.4), CallFunc::create([=]() { sprite_boom->removeFromParentAndCleanup(true); }), nullptr)); }
void Mainplan::addAnimation() { //加载飞机动画。 auto anim = Animation::create(); SpriteFrame *sf; //通过桢缓存名字动画 加入第一帧 sf =SpriteFrameCache::getInstance()->getSpriteFrameByName("hero_fly_1.png"); anim->addSpriteFrame(sf); //加入第二帧 sf =SpriteFrameCache::getInstance()->getSpriteFrameByName("hero_fly_2.png"); anim->addSpriteFrame(sf); //设置帧循环播放次数 -1代表无限循环 anim->setLoops(-1); //设置帧播放的间隔 anim->setDelayPerUnit(0.01f); //根据anim序列创建anim动画an auto an =Animate::create(anim); //让飞机运行帧动画 this->runAction(an); }
void GuanacasteScene::campFire() { //carga el objeto del mapa auto Fogata = objetos->getObject("Fogata"); CCASSERT(!Fogata.empty(), "Fogata object not found"); //saco las coordenadas del objeto en el tilemap //se hace la suma debido al error en cocos2d float x = Fogata["x"].asFloat()+315; float y = Fogata["y"].asFloat()+28; //Crea el sprite y lo posiciona SFogata = Sprite::create("Animations/CampFire.png", Rect(0, 0,64,64)); SFogata->setPosition(CC_POINT_PIXELS_TO_POINTS(Point(x,y))); //crea la animacion de la fogata auto animation = Animation::create(); for ( int i = 0; i < 5; ++i ) animation->addSpriteFrame(SpriteFrame::create("Animations/CampFire.png", Rect(i*64, 0,64,64))); animation->setDelayPerUnit( 0.1333f ); auto repeatAnimation = RepeatForever::create( Animate::create(animation) ); SFogata->runAction(repeatAnimation); }
void MonsterSprite::move(){ auto animation=Animation::create(); __String *anStr1=_actionName.clone(); __String *anStr2=_actionName.clone(); anStr1->append("1.png"); anStr2->append("2.png"); SpriteFrame *spf1=SpriteFrameCache::getInstance()->getSpriteFrameByName(anStr1->getCString()); SpriteFrame *spf2=SpriteFrameCache::getInstance()->getSpriteFrameByName(anStr2->getCString()); animation->addSpriteFrame(spf1); animation->addSpriteFrame(spf2); animation->setDelayPerUnit(0.5f); animation->setRestoreOriginalFrame(true); auto moveAc= Animate::create(animation); moveAction=Repeat::create(moveAc, 100); this->runAction(moveAction); }
void Skill::thunder() { log("thunder..."); Player* player = Player::getInstance(); if (!player->getThundering()) { player->thunder(); auto animationCache = AnimationCache::getInstance(); // check if already loaded auto animation = animationCache->getAnimation("skill_thunder"); if (!animation) { auto spriteFrameCache = SpriteFrameCache::getInstance(); animation = Animation::create(); animation->setDelayPerUnit(0.1f); //put frames into animation for (int i = 0; i < 8; i++) { animation->addSpriteFrame(spriteFrameCache->getSpriteFrameByName(String::createWithFormat("thunder_%d.png", i)->getCString())); } // put the animation into cache animationCache->addAnimation(animation, "skill_thunder"); } float x = (SIZE_WIDTH - 100) / 6; float y = (SIZE_HEIGHT - 80) / 8; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { Sprite* thunder = Sprite::createWithSpriteFrameName("thunder_0.png"); thunder->setPosition(50 + x * (i * 2 + 1), 40 + y * (j * 2 + 1)); thunder->setRotation(15); this->getParent()->addChild(thunder); _thunders.pushBack(thunder); thunder->runAction(Sequence::create(Repeat::create(Animate::create(animation), 10), CallFuncN::create(CC_CALLBACK_1(Skill::thunderEnd, this)), NULL)); } } this->getParent()->schedule(CC_CALLBACK_1(Skill::thundering, this), 1, "thudering"); } }
void HelloWorld::resetPlayer() { isPlayerDie = true; //플레이어가 죽음 SimpleAudioEngine::getInstance()->playEffect("explosion.wav"); auto sPlayer = (Sprite*)getChildByTag(TAG_SPRITE_PLAYER); sPlayer->setVisible(false); //플레이어가 죽었으므로 플레이어를 지움 auto spr = Sprite::create(); //플레이어가 죽을때 애니메이션 생성 spr->setPosition(sPlayer->getPosition()); this->addChild(spr, 2); auto ani = Animation::create(); ani->setDelayPerUnit(0.05f); auto texture = Director::getInstance()->getTextureCache()->addImage("Explosion.png"); //통짜 이미지를 텍스쳐로 잘라서 사용 for (int i = 0; i < 11; i++) { ani->addSpriteFrameWithTexture(texture, Rect(i % 5 * 160, i / 5 * 160, 160, 160)); //Explosion.png를 잘라서 순차적으로 사용 } auto animate = Animate::create(ani); spr->runAction(animate); spr->runAction(Sequence::create( DelayTime::create(0.55f), RemoveSelf::create(), CallFunc::create(CC_CALLBACK_0(HelloWorld::setGameover, this)), NULL)); count = 0; this->unschedule(schedule_selector(HelloWorld::setMissile)); this->unschedule(schedule_selector(HelloWorld::upGradeP2)); this->unschedule(schedule_selector(HelloWorld::upGradeP3)); this->unschedule(schedule_selector(HelloWorld::upGradeP4)); this->unschedule(schedule_selector(HelloWorld::upGradeF2)); this->unschedule(schedule_selector(HelloWorld::upGradeF3)); this->unschedule(schedule_selector(HelloWorld::upGradeF4)); this->unschedule(schedule_selector(HelloWorld::upGradeL2)); this->unschedule(schedule_selector(HelloWorld::upGradeL3)); this->unschedule(schedule_selector(HelloWorld::upGradeL4)); this->unschedule(schedule_selector(HelloWorld::ChargeMissile)); }
void Level01::animCache() { anim1 = Animation::create(); anim1->addSpriteFrameWithFileName("img/player02.png"); anim1->addSpriteFrameWithFileName("img/player03.png"); anim1->addSpriteFrameWithFileName("img/player04.png"); anim1->setLoops(1); anim1->setDelayPerUnit(0.2f); anim1->setRestoreOriginalFrame(true); auto standAnim = Animation::create(); standAnim->addSpriteFrameWithFileName("img/player01.png"); standAnim->addSpriteFrameWithFileName("img/player01-2.png"); standAnim->addSpriteFrameWithFileName("img/player01-3.png"); standAnim->setLoops(1); standAnim->setDelayPerUnit(0.7f); standAnim->setRestoreOriginalFrame(true); m_animCache = AnimationCache::getInstance(); m_animCache->addAnimation(anim1, "walking"); m_animCache->addAnimation(standAnim, "stand"); }
void HelloWorld::createDragon() { auto texture = Director::getInstance()->getTextureCache()->addImage("Images/dragon_animation.png"); auto animation = Animation::create(); animation->setDelayPerUnit(0.1f); for (int i = 0; i < 6; i++) { int index = i % 4; int rowIndex = i / 4; animation->addSpriteFrameWithTexture(texture, Rect(index * 130, rowIndex * 140, 130, 140)); } auto dragon = Sprite::createWithTexture(texture, Rect(0, 0, 130, 140)); dragon->setPosition(Vec2(240, 160)); this->addChild(dragon); auto animate = Animate::create(animation); auto rep = RepeatForever::create(animate); dragon->runAction(rep); }
void PlayRunLayer::loadFrame(){ //节奏线碰撞时的动画效果 auto animation = Animation::create(); animation->addSpriteFrameWithFile("game/play/hitline_blink.png"); animation->setDelayPerUnit(0.3f); animation->setRestoreOriginalFrame(true); AnimationCache::getInstance()->addAnimation(animation, "hitline_blink"); //增加撞线 auto mRhythm = ui::Scale9Sprite::create("game/play/hitline.png"); mRhythm->setAnchorPoint(Vec2(0.5,0)); mRhythm->setPosition(Vec2(gameConfig->impactLine, 0)); mRhythm->setPreferredSize(Size(mRhythm->getContentSize().width,gameConfig->contentHeight-gameConfig->chordHeight)); mRhythm->setTag(8001); this->addChild(mRhythm,3); //和弦区域的底图 if(gameConfig->musicModel->getType()==MUSICMODEL_TYPE_CHORD){ auto chordBanner = Sprite::create("game/play/chordbanner.png"); chordBanner->setPosition(Vec2(0,gameConfig->contentWidth-gameConfig->chordHeight)); this->addChild(chordBanner); } //弦间的高度 int stringCount = 5; for (int i=0; i<6; i++) { float stringHeight = gameConfig->stringUnitHeight*stringCount; stringMap[i+1]=Value(stringHeight); ui::Scale9Sprite *mString = ui::Scale9Sprite::create("game/play/string.png"); mString->setPreferredSize(Size(Vec2(gameConfig->contentWidth, mString->getContentSize().height))); //设置弦的位置 Y轴:距离下边界的位置+弦的位置 mString->setPosition(Vec2(gameConfig->contentWidth/2,gameConfig->stringSideHeight+stringHeight)); this->addChild(mString,1); stringCount-=1; } }
bool Thunder::init() { if (!Entity::init()) return false; auto animation = Animation::create(); //auto anisprite = Sprite::create("Thunder/Thunder_Picture.png"); //SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Sprite/Thunder/Thunder_Picture.plist", anisprite->getTexture()); char szName[100]; for (int i = 1; i <= 10; ++i) { sprintf(szName, "Thunder/thunder%02d.png", i); animation->addSpriteFrameWithFile(szName); } animation->setDelayPerUnit(0.05); animation->setLoops(1); auto sprite = Sprite::create(); auto animate = Animate::create(animation); auto deadFunc = CallFunc::create([this]() { this->removeFromParent(); }); auto sequence = Sequence::create(animate, deadFunc, NULL); sprite->setScale(0.2); sprite->setAnchorPoint(Vec2(0.5, 0.05)); sprite->setPositionY(-20.0); sprite->runAction(sequence); this->addChild(sprite); this->scheduleUpdate(); return true; }
void Thing::addAnimations() { const std::string animationName = this->getAnimationNameByType(AnimationType::IDLE); auto animation = AnimationCache::getInstance()->getAnimation(animationName); if(animation) return; int i = 0; for( auto iter = _animations.begin(); iter != _animations.end(); iter++, i++) { auto animation = Animation::create(); animation->setDelayPerUnit(0.2f); for( int j=0; j < _animationFrameNum[i]; j++ ) { auto sfName = String::createWithFormat("%s-%d-%d.png", _name.c_str(), i+1, j+1)->getCString(); animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(sfName)); } //put the animation into cache const std::string animName = this->getAnimationNameByType(*iter); AnimationCache::getInstance()->addAnimation(animation, animName); } }
void RoleEmemyBig::down() { log("RoleEmemyBig, down------------->"); auto animation = Animation::create(); animation->setDelayPerUnit(0.2f); animation->addSpriteFrame( SpriteFrameCache::getInstance()->getSpriteFrameByName( "hero_blowup_n1.png")); animation->addSpriteFrame( SpriteFrameCache::getInstance()->getSpriteFrameByName( "hero_blowup_n2.png")); animation->addSpriteFrame( SpriteFrameCache::getInstance()->getSpriteFrameByName( "hero_blowup_n3.png")); animation->addSpriteFrame( SpriteFrameCache::getInstance()->getSpriteFrameByName( "hero_blowup_n4.png")); auto animate = Animate::create(animation); auto remove = CallFunc::create( CC_CALLBACK_0(RoleEmemyBig::doRemoveSelf, this, this)); auto sequence = Sequence::create(animate, remove, nullptr); runAction(sequence); }
Tower_Rocket_Bullet::Tower_Rocket_Bullet(int lev, Node*p, float rotation, Vec2 pos_tower, Vec2 pos)/*scene ,属于某个tower ,目标位置*/ { isDone = false; string str = ""; float pos_x = 0, pos_y = 0; pos_y = 1200 * cos(rotation*3.14159 / 180.0); pos_x = 1200 * sin(rotation*3.14159 / 180.0); switch (lev) { case 1: { str = "PRocket11.png"; } break; case 2: { str = "PRocket21.png"; } break; case 3: { str = "PRocket31.png"; } break; } initTowerBulletBase(lev); sprite = Sprite::createWithSpriteFrameName(str); p->addChild(sprite); sprite->setPosition(pos_tower); sprite->runAction(MoveBy::create(1.8, Vec2(pos_x, pos_y))); sprite->setRotation(rotation); sprite;; switch (lev) { case 1: { str = "PRocket1"; } break; case 2: { str = "PRocket2"; } break; case 3: { str = "PRocket3"; } break; } auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "1.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "2.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "3.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "4.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "5.png")); ani->setDelayPerUnit(0.05); ani->setRestoreOriginalFrame(true); ani->setLoops(-1); sprite->runAction(Animate::create(ani)); }
void RunnerSprite::extralInit(){ auto roleGroup = this->mMap->getObjectGroup("role"); ValueMap obj = static_cast<ValueMap>(roleGroup->getObject("player")); float spX = obj["x"].asFloat(); float spY = obj["y"].asFloat(); SpriteFrameCache::getInstance()->addSpriteFramesWithFile("playerrun.plist", "playerrun.png"); mRunner = cocos2d::Sprite::createWithSpriteFrameName("image1.png"); mRunner->setPosition(Vec2(spX,spY)); mRunner->setAnchorPoint(Vec2(0.5,0.0)); mMap->addChild(mRunner); auto runAnim = Animation::create(); for(int i = 1;i<17;i++){ char nameBuf[100] = {0}; sprintf(nameBuf, "image%d.png",i); auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(nameBuf); runAnim->addSpriteFrame(frame); } runAnim->setDelayPerUnit(0.06f); runAnim->setRestoreOriginalFrame(true); AnimationCache::getInstance()->addAnimation(runAnim,"runAction"); auto colGroup = mMap->getObjectGroup("collision"); auto colObj = colGroup->getObjects(); CCLOG("objs %lu",colObj.size()); barriers.reserve(colObj.size()); for(ValueVector::iterator it = colObj.begin(); it != colObj.end(); ++it) { ValueMap mp = it->asValueMap(); barriers.push_back(Rect(mp["x"].asFloat(), mp["y"].asFloat(), mp["width"].asFloat(), mp["height"].asFloat())); } auto colGroup2 = mMap->getObjectGroup("collision"); auto colObj2 = colGroup2->getObjects(); CCLOG("objs %lu",colObj.size()); goldens.reserve(colObj2.size()); goldenSs.reserve(colObj2.size()); int i = 0; for(ValueVector::iterator it = colObj2.begin(); it != colObj2.end(); ++it) { ValueMap mp = it->asValueMap(); goldens.push_back(Rect(mp["x"].asFloat(), mp["y"].asFloat(), mp["width"].asFloat(), mp["height"].asFloat())); auto gold = Sprite::create("gold.png"); gold->setAnchorPoint(Vec2(0.5,0.5)); gold->setPosition(Vec2(mp["x"].asFloat(), mp["y"].asFloat() + 180)); gold->setScale(0.2, 0.2); gold->setTag(2800+i); mMap->getLayer("ground")->addChild(gold); goldenSs.push_back(gold); i++; } setRunState(kROLERUN); auto runAim = RepeatForever::create(Animate::create(AnimationCache::getInstance()->getAnimation("runAction"))) ; this->mRunner->runAction(runAim); gNum = 0; mNum = 0; }
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } this->isGameOver = false; visibleSize = Director::getInstance()->getVisibleSize(); // Ground setup groundSprite0 = Sprite::create("ground.png"); this->addChild(groundSprite0); groundSprite0->setPosition(Vec2(groundSprite0->getContentSize().width/2.0 , groundSprite0->getContentSize().height/2)); groundSprite1 = Sprite::create("ground.png"); this->addChild(groundSprite1); groundSprite1->setPosition(Vec2(visibleSize.width + groundSprite1->getContentSize().width/2.0 -10, groundSprite1->getContentSize().height/2)); auto groundbody0 = PhysicsBody::createBox(groundSprite0->getContentSize()); groundbody0->setDynamic(false); groundbody0->setContactTestBitmask(true); groundSprite0->setPhysicsBody(groundbody0); auto groundbody1 = PhysicsBody::createBox(groundSprite1->getContentSize()); groundbody1->setDynamic(false); groundbody1->setContactTestBitmask(true); groundSprite1->setPhysicsBody(groundbody1); // SkyGround setup Sprite *skySprite0 = Sprite::create("flappy_background.png"); Sprite *skySprite1 = Sprite::create("flappy_background.png"); Sprite *skySprite2 = Sprite::create("flappy_background.png"); this->addChild(skySprite0); this->addChild(skySprite1); this->addChild(skySprite2); skySprite0->setPosition(visibleSize.width/2, 168 + 200); skySprite1->setPosition(visibleSize.width/2 - skySprite1->getContentSize().width, 168 + 200); skySprite2->setPosition(visibleSize.width/2 + skySprite1->getContentSize().width, 168 + 200); // bird setup /* Sprite *birdSprite = Sprite::create("flappybird1.png"); this->addChild(birdSprite); birdSprite->setPosition(visibleSize.width/2, visibleSize.height/2 + 120); */ SpriteFrameCache* cache = SpriteFrameCache::getInstance(); cache->addSpriteFramesWithFile("bird.plist"); auto flyAnim = Animation::create(); for (int i = 1; i < 4; i++) { SpriteFrame * frame = cache->getSpriteFrameByName("flappybird" + to_string(i) + ".png"); flyAnim->addSpriteFrame(frame); } auto birdSprite = Sprite::createWithSpriteFrameName("flappybird1.png"); flyAnim->setDelayPerUnit(0.2f); auto action = Animate::create(flyAnim); auto animation = RepeatForever::create(action); birdSprite->runAction(animation); birdSprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2 + 80)); this->addChild(birdSprite); auto birdBody = PhysicsBody::createCircle(17.0); birdBody->setDynamic(true); birdBody->setMass(1.0f); birdBody->setVelocity(Vec2(4.0f, 2.0f)); birdBody->setVelocityLimit(50); birdBody->setContactTestBitmask(true); birdSprite->setPhysicsBody(birdBody); //pipe setup topPipeSprite = Sprite::create("top_pipe.png"); bottomPipeSprite = Sprite::create("bottom_pipe.png"); topPipeSprite->setPosition(visibleSize.width + topPipeSprite->getContentSize().width/2, 600); auto pipebody0 = PhysicsBody::createBox(topPipeSprite->getContentSize()); pipebody0->setDynamic(false); topPipeSprite->setPhysicsBody(pipebody0); pipebody0->setContactTestBitmask(true); auto pipebody1 = PhysicsBody::createBox(bottomPipeSprite->getContentSize()); pipebody1->setDynamic(false); pipebody1->setContactTestBitmask(true); bottomPipeSprite->setPhysicsBody(pipebody1); this->positionBottomPipe(); this->addChild(topPipeSprite); this->addChild(bottomPipeSprite); //setup touch listener auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = [=](Touch *touch, Event *event){ if (!this->isGameOver) { birdBody->applyImpulse(Vec2(0, 90.0f)); } log("touch detected!"); return true; }; //setup collision listener auto plistener = EventListenerPhysicsContact::create(); plistener->onContactBegin = [=](PhysicsContact &contact){ log("collision detected!"); auto gameOverSprite = Sprite::create("game_over.png"); gameOverSprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2)); this->addChild(gameOverSprite); this->isGameOver = true; auto restartListner = EventListenerTouchOneByOne::create(); restartListner->setSwallowTouches(true); restartListner->onTouchBegan = [](Touch *touch, Event* event){ Director::getInstance()->replaceScene(HelloWorld::createScene()); return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(restartListner, gameOverSprite); return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(plistener, this); this->scheduleUpdate(); return true; }
// 0~2のアニメーションを再生するメソッド(0通常、1上、2下) //void型のPlayer::playAnimation(int index)関数を作成 void Player::playAnimation(int index) { //もしも変数indexCheckと変数indexが等しかったら if (indexCheck == index) { //ここで関数の処理を終了する return; } // アニメーション用のタグを固定値で定義 const int ACTION_TAG = 999; // 好きな数 // 既にアニメーションが動いていたら止める // アニメーションには全て999のタグが付いてるはずなので、重複しないように止める this->stopActionByTag(ACTION_TAG); // cocos2d::Size型のframeSize変数で表示するかわずたんのスプライトのサイズを指定? //Size(frameSize.width, frameSize.height)にそれぞれ16.0を代入している。型はfloat auto frameSize = Size(16.0, 24.0); //? //スプライトのX座標0、Y座標0(左上)から、16x16を切り出す? //Rectはx,y,width,heightの4つをとれる。矩形という意味 this->setTextureRect(Rect(0, 0, frameSize.width, frameSize.height)); //SpriteFrame*というテンプレートでframesという配列を宣言 Vector<SpriteFrame*> frames; //変数iを宣言、0で初期化しiがFRAME_COUNT未満である時、変数iに1を加算し{}内の処理を行いループ //iがFRAME_COUNT未満でなくなった時にループを抜ける for (int i = 0; i < FRAME_COUNT; ++i) { // indexの値によってy座標を変える //cocos2d::SpriteFrame型のポイント変数frameを宣言 //画像kawaz_shooting.pngを読み、frameSize.widthにiをかけ2コマアニメーションのループ //indexに16(frameSize.heightの値)をかけ、アニメーションを切り替え //frameSize.widthとframeSize.heightで表示する画像の大きさを指定? auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * i, index * frameSize.height, frameSize.width, frameSize.height)); //配列framesの終わりにframeの値を挿入する frames.pushBack(frame); } auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, index * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); if (index == 2) { frames.clear(); auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, 2 * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); } else if (index == 3) { frames.clear(); auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * 2, 2 * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); } else if (index == 4) { frames.clear(); auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(0, 3 * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); } else if (index == 5) { frames.clear(); auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, 3 * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); } else if (index == 6) { frames.clear(); auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * 2, 3 * frameSize.height, frameSize.width, frameSize.height)); frames.pushBack(frame); } else if (index == 7) { frames.clear(); for (int i = 0; i <= FRAME_COUNT; ++i) { auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * i, 96, frameSize.width, frameSize.height)); frames.pushBack(frame); } } //cocos2d::Animation型のポインタ変数animationを宣言 //配列framesを代入してるっぽいけどWithなんちゃらがよくわからない auto animation = Animation::createWithSpriteFrames(frames); if (index == 0) { animation->setDelayPerUnit(0.2); } else if (index == 7) { animation->setDelayPerUnit(0.3); } else { animation->setDelayPerUnit(0.1); } if (index != 7) { //cocos2d::RepeatForever型のポインタ変数animateを宣言 なんか闇っぽい //Animate::create(animation)でanimationで宣言された2コマアニメを生成してるとおもう //RepeatForeverは生成したアニメーションをを無限に繰り返す auto animate = RepeatForever::create(Animate::create(animation)); //ポインタ変数animateにACTION_TAGというタグを設定 animate->setTag(ACTION_TAG); //animateというアクションを走らせる this->runAction(animate); } else { auto clearAnimate = Animate::create(animation); clearAnimate->setTag(ACTION_TAG); this->runAction(clearAnimate); } //indexCheckにindexの値を代入する indexCheck = index; }
Monster_fat_green::Monster_fat_green(int t_hp, Node*scene, Vec2 pos, queue<Vec2> que) { string str = "fat_green01.png"; initBase(); hp = t_hp; hp_now = hp; queue_way = que; sprite = Sprite::createWithSpriteFrameName(str); scene->addChild(sprite); sprite->setPosition(pos); sprite;; Scene_UI*sce = (Scene_UI*)scene; menu = MenuItemSprite::create(Sprite::create("1.png"), Sprite::create("1.png"), [=](Ref*) { is_selected = !is_selected; if (is_selected) { for (int i = 0; i < sce->monster_queue.size(); i++) { ; { ((Bonus_UI*)sce->monster_queue[i])->sprite_selected->setVisible(false); ((Bonus_UI*)sce->monster_queue[i])->is_selected = false; } } is_selected = true; sprite_selected->setVisible(true); return; } sprite_selected->setVisible(false); }); menu->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height / 2); men = Menu::create(menu, nullptr); men->setPosition(0, 0); sprite->addChild(men); menu->setScale(sprite->getContentSize().height / 2.0 / 40.0); sprite_selected = Sprite::createWithSpriteFrameName("point01.png"); { auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point02.png")); ani->setDelayPerUnit(3.0 / 30.0); ani->setRestoreOriginalFrame(false); ani->setLoops(-1); sprite_selected->runAction(Animate::create(ani)); } sprite_selected->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height); sprite->addChild(sprite_selected); sprite_selected->setVisible(false); hp_sprite_2 = Sprite::createWithSpriteFrameName("MonsterHP02.png"); hp_sprite_2->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5)); sprite->addChild(hp_sprite_2); hp_sprite_1 = Sprite::createWithSpriteFrameName("MonsterHP01.png"); hp_sprite_1->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5)); sprite->addChild(hp_sprite_1); hp_sprite_1->setAnchorPoint(Vec2(0, 0.5)); hp_sprite_2->setAnchorPoint(Vec2(0, 0.5)); hp_sprite_1->setVisible(false); hp_sprite_2->setVisible(false); hp_sprite_1->setScaleY(0.7); resetWay(); auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm02.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm02.png")); ani->setDelayPerUnit(0.1); ani->setRestoreOriginalFrame(true); ani->setLoops(1); sprite->runAction(Animate::create(ani)); /* hp_sprite_1;; hp_sprite_2;; */ }
Bonus_3_12::Bonus_3_12(Node*scene,Vec2 pos) { string str = "cloud12.png"; initBase(); is_Bonus = true; Scene_UI*sce = (Scene_UI*)scene; menu = MenuItemSprite::create(Sprite::createWithSpriteFrameName(str), Sprite::createWithSpriteFrameName(str), [=](Ref*) { is_selected = !is_selected; if (is_selected) { for (int i = 0;i<sce->monster_queue.size();i++) { ; { ((Bonus_UI*)sce->monster_queue[i])->sprite_selected->setVisible(false); ((Bonus_UI*)sce->monster_queue[i])->is_selected = false; } } is_selected = true; sprite_selected->setVisible(true); return; } sprite_selected->setVisible(false); }); menu->setPosition(pos); menu;; men = Menu::create(menu, nullptr); men->setPosition(0, 0); scene->addChild(men); sprite = Sprite::createWithSpriteFrameName(str); scene->addChild(sprite); sprite->setPosition(pos); sprite;; sprite_selected = Sprite::createWithSpriteFrameName("point01.png"); { auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point02.png")); ani->setDelayPerUnit(3.0 / 30.0); ani->setRestoreOriginalFrame(false); ani->setLoops(-1); sprite_selected->runAction(Animate::create(ani)); } sprite_selected->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height); sprite->addChild(sprite_selected); sprite_selected->setVisible(false); hp_sprite_2 = Sprite::createWithSpriteFrameName("MonsterHP02.png"); hp_sprite_2->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5)); sprite->addChild(hp_sprite_2); hp_sprite_1 = Sprite::createWithSpriteFrameName("MonsterHP01.png"); hp_sprite_1->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5)); sprite->addChild(hp_sprite_1); hp_sprite_1->setAnchorPoint(Vec2(0, 0.5)); hp_sprite_2->setAnchorPoint(Vec2(0, 0.5)); hp_sprite_1->setScaleY(0.7); sprite_effect_slow = Sprite::createWithSpriteFrameName("PShit-12.png"); sprite->addChild(sprite_effect_slow); auto ani1 = Animation::create(); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png")); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png")); ani1->setDelayPerUnit(0.1); ani1->setRestoreOriginalFrame(false); ani1->setLoops(-1); sprite_effect_slow->runAction(Animate::create(ani1)); sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20); sprite_effect_slow->setVisible(false); hp_sprite_1->setVisible(false); hp_sprite_2->setVisible(false); /*init Õ¼ÓÃλÖÃ*/ queue_takeplace_pos.push_back(Vec2(PublicFunc::convertToX(pos.x),PublicFunc::convertToY(pos.y))); for (int i = 0;i<queue_takeplace_pos.size(); i++) { sce->data->push_back(queue_takeplace_pos[i]); } }
void Monster_UI::Destory(bool isKing) { Scene_UI*scen = (Scene_UI*)sprite->getParent(); playEffect(); /*清楚所有 该怪物 为目标的炮塔 目标*/ for (int i = 0; i < scen->tower_queue.size(); i++) { if (scen->tower_queue[i]->target == this) { scen->tower_queue[i]->setTarget(0); } } for (vector<Monster_UI*>::iterator it = scen->monster_queue.begin(); it != scen->monster_queue.end();) { if ((*it) == this) { scen->monster_queue.erase(it); } else ++it; } auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air02.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air03.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air04.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air05.png")); ani->setDelayPerUnit(0.1); ani->setRestoreOriginalFrame(false); ani->setLoops(1); sprite->removeAllChildrenWithCleanup(true); sprite->stopAllActions(); char ss[100]; if (money >= 10) { sprintf(ss, "money%d.png", money); } else { sprintf(ss, "money0%d.png", money); } if (isKing) { bonus = Sprite::create(); } else { scen->view_up_menu->addMoney(money); bonus = Sprite::createWithSpriteFrameName(ss); } bonus->setPosition(sprite->getPosition()); sprite->getParent()->addChild(bonus, 6); bonus->runAction(MoveBy::create(0.2, Vec2(0, 50))); auto an = Animate::create(ani); /*q c*/ bonus;; sprite->runAction(Sequence::create(an, CallFunc::create([=] { sprite->removeFromParentAndCleanup(true); bonus->removeFromParentAndCleanup(true); delete this; }), nullptr)); }
void Field::SetFieldSprite(FieldBlock fieldBlockData) { HexaPoint anchor(fieldBlockData.position); auto iter = m_FieldSpriteMap.find(anchor); if (iter == m_FieldSpriteMap.end()) return; Sprite* fieldBlock = iter->second; char imgNameBuf[20]; FieldBlockType fieldType = fieldBlockData.type; FieldBlockStatus fieldStatus = fieldBlockData.status; switch (fieldStatus) { case FBS_NONE: break; case FBS_NORMAL: { switch (fieldType) { case FBT_NORMAL: { //strcpy(imgNameBuf, "block_water.png"); char* imgName = "block_grass"; sprintf_s(imgNameBuf, "%s%d.png", imgName, rand() % 6 + 1); fieldBlock->setSpriteFrame(m_SpriteFrame->getSpriteFrameByName(imgNameBuf)); }break; default: break; } }break; case FBS_HOLE: { strcpy(imgNameBuf, "sprite_none.png"); fieldBlock->setTexture(imgNameBuf); }break; case FBS_WATER: { // 임시 strcpy(imgNameBuf, "sprite_none.png"); fieldBlock->setTexture(imgNameBuf); break; strcpy(imgNameBuf, "block_water.png"); auto spriteFrame = m_SpriteFrame->getSpriteFrameByName(imgNameBuf); fieldBlock->setSpriteFrame(spriteFrame); auto blockAnimation = m_AnimationList.at(FBT_WATER); blockAnimation->setDelayPerUnit(0.15f); fieldBlock->runAction(RepeatForever::create(Animate::create(blockAnimation))); }break; /* case FBS_COVER_WATER: fieldBlock->runAction(CCRepeatForever::create(CCAnimate::create(m_AnimationList.at(FBT_WATER)))); break; */ default: break; } // TODO : 디버그할때 가끔 여기서 뻑남 fieldBlock->setTexture(imgNameBuf); float scale = HEXAGON_LENGTH * 2 / fieldBlock->getContentSize().width; fieldBlock->setScale(scale); fieldBlock->setAnchorPoint(Vec2(0.5f, 0.65f)); ScreenPoint screenPoint = HexaToScreen(anchor); fieldBlock->setPosition(screenPoint); return; }
void Level01::setBG() { m_worldMap = Node::create(); if (UserDefault::getInstance()->getBoolForKey("light")) { m_collision = m_visibleSize.width*0.3; } else { m_collision = -m_visibleSize.width*0.7; } Sprite* bg[3]; for (int i = 0; i < 3; i++) { bg[i] = Sprite::create("img/background.png"); // position the sprite on the center of the screen bg[i]->setScale(m_visibleSize.width / m_visibleSize.height); bg[i]->setPosition(Point((m_visibleSize.width) * i+1, m_visibleSize.height / 2)); // add the sprite as a child to this layer m_worldMap->addChild(bg[i]); } createObjectOnFloor(bg[1]->getBoundingBox().getMidX()- 200, "img/chair.png"); createObjectOnFloor(bg[1]->getBoundingBox().getMidX(), "img/chair.png"); createObjectOnFloor(bg[1]->getBoundingBox().getMidX(), "img/table.png"); createObjectOnFloor(bg[0]->getBoundingBox().getMidX(), "img/chair.png"); auto drawing2 = Sprite::create("img/drawing01.png"); drawing2->setScale(2); drawing2->setPosition(Vec2(m_visibleSize.width * 1.3, m_visibleSize.height / 1.4)); //m_worldMap->addChild(drawing2); //m_doorList[2] = createDoor(m_visibleSize.width * 2.7); m_doorList[0] = createDoor(convertToNodeSpace(sprite->getPosition()).x); //m_doorList[1] = createDoor(m_visibleSize.width * 3.4); auto sadman = Sprite::create("img/sadman01.png"); sadman->setScale(1.8); sadman->setPosition(Vec2(m_visibleSize.width * 1.2 + 55, m_floorPoint + sadman->getBoundingBox().getMaxY())); m_worldMap->addChild(sadman); if (UserDefault::getInstance()->getBoolForKey("light")) { sadman->setVisible(true); } else { sadman->setVisible(false); } auto sadmanAnim = Animation::create(); sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png"); sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png"); sadmanAnim->setLoops(-1); sadmanAnim->setDelayPerUnit(0.3f); sadmanAnim->setRestoreOriginalFrame(true); auto sadmanAnimate = Animate::create(sadmanAnim); sadman->runAction(RepeatForever::create(sadmanAnimate)); m_doorList[1] = sadman; this->addChild(m_worldMap); }
void Tower_Pin::setLevel(int lev) { sprite->stopAllActions(); view_click = 0; switch (lev) { case 1: { sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin11.png")); sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-11.png")); sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-11.png")); }break; case 2: { sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin21.png")); sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-12.png")); sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-12.png")); }break; case 3: { sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin31.png")); sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-13.png")); sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-13.png")); }break; } if (lev == 1) { auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air11.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air12.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air13.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air14.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air15.png")); ani->setDelayPerUnit(0.07); ani->setRestoreOriginalFrame(true); ani->setLoops(1); /* BUG TMP FIX*/ if (effect == 0) { effect = Sprite::create(); effect->setPosition(sprite->getPosition()); sprite->getParent()->addChild(effect); effect->runAction(Animate::create(ani)); } else { effect->removeFromParentAndCleanup(true); effect = Sprite::create(); effect->setPosition(sprite->getPosition()); sprite->getParent()->addChild(effect); effect->runAction(Animate::create(ani)); } } else { //if (this->level < lev) { auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air11.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air12.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air13.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air14.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air15.png")); ani->setDelayPerUnit(0.03); ani->setRestoreOriginalFrame(true); ani->setLoops(1); /* BUG TMP FIX*/ if (effect == 0) { effect = Sprite::create(); effect->setPosition(sprite->getPosition()); sprite->getParent()->addChild(effect); effect->runAction(Animate::create(ani)); } else { effect->removeFromParentAndCleanup(true); effect = Sprite::create(); effect->setPosition(sprite->getPosition()); sprite->getParent()->addChild(effect); effect->runAction(Animate::create(ani)); } } } this->level = lev; initTowerBase(); }
void Tower_Pin::Destory() { Scene_UI*sc = (Scene_UI*)sprite->getParent(); for (vector<Tower_UI*>::iterator it = sc->tower_queue.begin(); it != sc->tower_queue.end();++it) { if ((*it) == this) { sc->tower_queue.erase(it); break; } } setClick(false); setTarget(0); for (int i = 0; i < bullet_queue.size(); i++) { bullet_queue[i]->Destory(target); } bullet_queue.clear(); auto x = (Scene_UI*)sprite->getParent(); x->data->pop(PublicFunc::convertToX(sprite->getPosition().x), PublicFunc::convertToY(sprite->getPosition().y)); auto ani = Animation::create(); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air01.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air02.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air03.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air04.png")); ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air05.png")); ani->setDelayPerUnit(0.1); ani->setRestoreOriginalFrame(true); ani->setLoops(1); auto an = Animate::create(ani); sprite_base->removeFromParentAndCleanup(true); effect->removeFromParentAndCleanup(true); sprite_upgrade->removeFromParentAndCleanup(true); sprite->runAction(Sequence::create(an, CallFunc::create([=] { sprite->removeFromParentAndCleanup(true); delete this; }), nullptr)); }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. auto lbl_title = LabelTTF::create("じゃんけんゲーム", "HiraKakuProN-W6", 30); lbl_title->setPosition(Point(origin.x +visibleSize.width/2, origin.y +visibleSize.height - lbl_title->getContentSize().height )); this->addChild(lbl_title); // グーだけの単一スプライトを表示する jangken_aite = Sprite::create("goo.png"); jangken_aite->setPosition(Point(origin.x+visibleSize.width/2, origin.y+visibleSize.height - lbl_title->getContentSize().height - jangken_aite->getContentSize().height -20)); this->addChild(jangken_aite); // アニメーションを生成する auto jangken_anime = Animation::create(); jangken_anime->addSpriteFrameWithFile("choki.png"); jangken_anime->addSpriteFrameWithFile("par.png"); jangken_anime->addSpriteFrameWithFile("goo.png"); jangken_anime->setDelayPerUnit(0.1f); jangken_anime->setLoops(-1); jangken_anime->setRestoreOriginalFrame(true); jangken_anime_run = (CCAnimate*)CCSequence::create( CCAnimate::create(jangken_anime), NULL); // アニメーション実行 jangken_aite->runAction(jangken_anime_run); // じゃんけんボタンを追加 auto btn_goo = MenuItemImage::create("goo.png", "goo.png", CC_CALLBACK_1(HelloWorld::pushGoo, this)); auto btn_choki = MenuItemImage::create("choki.png", "choki.png", CC_CALLBACK_1(HelloWorld::pushChoki, this)); auto btn_par = MenuItemImage::create("par.png", "par.png", CC_CALLBACK_1(HelloWorld::pushPar, this)); btn_goo->setPosition(Point(origin.x + btn_goo->getContentSize().width/2 + 10, origin.y + visibleSize.height/2 - 20)); btn_choki->setPosition(Point(btn_goo->getPosition().x + btn_choki->getContentSize().width + 10, origin.y + visibleSize.height/2 - 20)); btn_par->setPosition(Point(btn_choki->getPosition().x + btn_par->getContentSize().width + 10, origin.y + visibleSize.height/2 - 20)); auto btns = Menu::create(btn_goo, btn_choki, btn_par, NULL); btns->setPosition(Point::ZERO); this->addChild(btns); // 乱数を初期化 srand((unsigned)time(NULL)); lbl_dis = LabelTTF::create("", "HiraKakuProN-W6", 30); lbl_dis->setPosition(Point(origin.x + visibleSize.width/2, origin.y + 200)); addChild(lbl_dis); return true; }
Tower_Ball::Tower_Ball(Node*scene, Vec2 pos, int lev) { view_click = 0; count = 0; effect = 0; this->level = lev; cos_upgrade = 320; initTowerBase(); sprite_bullet_effect = Sprite::create(); sprite_bullet_effect;; sprite = Sprite::createWithSpriteFrameName("Ball11.png"); sprite;; sprite_base = MenuItemSprite::create(Sprite::createWithSpriteFrameName("Ball11.png"), Sprite::createWithSpriteFrameName("Ball11.png") , [=](Ref*p) { if (view_click == 0) { ((Scene_UI*)scene)->view_click_gloal->setAllVisFalse(); view_click = new View_Click_Tower(4, this); } }); sprite_base->setPosition(pos); sprite_bullet_effect->setPosition(pos); sprite_base;; auto ss = Menu::create(sprite_base, nullptr); ss->setPosition(0, 0); scene->addChild(ss); //Sprite::createWithSpriteFrameName("Bottle-11.png"); scene->addChild(sprite); sprite->setPosition(pos); scene->addChild(sprite_bullet_effect); sprite_bullet_effect->setAnchorPoint(Vec2(0.5, 0)); sprite_bullet_effect->setVisible(false); sprite_upgrade = Sprite::createWithSpriteFrameName("showupgrade02.png"); scene->addChild(sprite_upgrade); sprite_upgrade->setPosition(sprite->getPositionX(), sprite->getPositionY() + sprite->getContentSize().height); auto ani2 = Animation::create(); ani2->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("showupgrade02.png")); ani2->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("showupgrade01.png")); ani2->setDelayPerUnit(0.1); ani2->setRestoreOriginalFrame(false); ani2->setLoops(-1); sprite_upgrade->runAction(Animate::create(ani2)); sprite_upgrade->setVisible(false); setLevel(lev); }
void Monster_UI::set_effect_slow(int lev, int tag) { if (effect_slow_lev > lev)return;/*等级高的减速 才算*/ /*同等级 都会刷新减速时间*/ /*减速等级高优先*/ if (effect_slow_lev == 0) { sprite_effect_slow = Sprite::createWithSpriteFrameName("PShit-12.png"); sprite->addChild(sprite_effect_slow); auto ani1 = Animation::create(); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png")); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png")); ani1->setDelayPerUnit(0.1); ani1->setRestoreOriginalFrame(false); ani1->setLoops(-1); sprite_effect_slow->runAction(Animate::create(ani1)); sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20); sprite_effect_slow->setVisible(false); } if (tag) { sprite_effect_slow->stopAllActions(); auto ani1 = Animation::create(); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png")); ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png")); ani1->setDelayPerUnit(0.1); ani1->setRestoreOriginalFrame(false); ani1->setLoops(-1); sprite_effect_slow->runAction(Animate::create(ani1)); sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20); } effect_slow_lev = lev; moveSpeed = moveSpeed_readOnly; is_effect_slow = true; sprite_effect_slow->setVisible(true); switch (lev) { case 1: { moveSpeed /= 0.8; } break; case 2: { moveSpeed /= 0.6; } break; case 3: { moveSpeed /= 0.3; } break; } isDone = true; sprite->stopActionByTag(2); sprite->stopActionByTag(3); sprite->stopActionByTag(4); auto a4 = Sequence::create(DelayTime::create(1.0 + 0.5*lev), CallFunc::create([=]() { is_effect_slow = false; moveSpeed = moveSpeed_readOnly; isDone = true; sprite_effect_slow->setVisible(false); sprite->stopActionByTag(2); sprite->stopActionByTag(3); sprite->stopActionByTag(4); effect_slow_lev = 0; updateWay(); }), nullptr); a4->setTag(4); sprite->runAction(a4); }