Beispiel #1
0
void Bullet::flyTo(CCPoint targetInWorldSpace)
{
	//子弹开始起飞点
	CCPoint startInNodeSpace = CCPointZero;
	//把节点坐标转换到屏幕坐标中
	CCPoint startInWorldSpace = this->getParent()->convertToWorldSpace(startInNodeSpace);
	CCPoint targetInNodeSpace = this->getParent()->convertToNodeSpace(targetInWorldSpace);
	//coordinate n. 坐标; radian,n. [数] 弧度;rotation ,n. 旋转.
	
	float angle = ccpAngleSigned(ccpSub(targetInWorldSpace,startInWorldSpace),CCPointMake(0,1));

	this->setRotation(CC_RADIANS_TO_DEGREES(angle));  //设置旋转角度
	this->setPosition(startInNodeSpace);//确定子弹初始位置
	this->setVisible(true);//让子弹可见

	float speed = ccpDistance(startInNodeSpace,targetInNodeSpace)/300.0f;
	CCMoveTo* moveTo = CCMoveTo::create(speed,targetInNodeSpace);  //以speed速度沿着任务路径飞行

	//callfunc_selector创建一个回调函数【**回调函数只需要有一个函数名即可,不需要括号】
	CCCallFunc* callFunc = CCCallFunc::create(this,callfunc_selector(Bullet::end));

	CCFiniteTimeAction* seq = CCSequence::create(moveTo, callFunc, NULL);  //子弹飞行持续一个有限的时间
	seq->setTag(k_Bullet_Action);  //设置子弹状态

	this->runAction(seq);// 子弹飞起来



}
//------------------------------------------------------------------
//
// SchedulerTest
//
//------------------------------------------------------------------
void SchedulerTest::onEnter()
{
	EaseSpriteDemo::onEnter();
	
	// rotate and jump
	CCActionInterval* jump1 = CCJumpBy::actionWithDuration(4, CCPointMake(-400,0), 100, 4);
	CCActionInterval* jump2 = jump1->reverse();
	CCActionInterval* rot1 = CCRotateBy::actionWithDuration(4, 360*2);
	CCActionInterval* rot2 = rot1->reverse();
	
	CCFiniteTimeAction* seq3_1 = CCSequence::actions(jump2, jump1, NULL);
	CCFiniteTimeAction* seq3_2 = CCSequence::actions( rot1, rot2, NULL);
	CCFiniteTimeAction* spawn = CCSpawn::actions(seq3_1, seq3_2, NULL);
	CCFiniteTimeAction* action = CCRepeatForever::actionWithAction((CCActionInterval*)spawn);
	
	CCRepeatForever* action2 = (CCRepeatForever*)(action->copy()->autorelease());
	CCRepeatForever* action3 = (CCRepeatForever*)(action->copy()->autorelease());
	
	
	m_grossini->runAction( CCSpeed::actionWithAction((CCActionInterval*)action, 0.5f) );
	m_tamara->runAction( CCSpeed::actionWithAction((CCActionInterval*)action2, 1.5f) );
	m_kathia->runAction( CCSpeed::actionWithAction((CCActionInterval*)action3, 1.0f) );
	
	CCParticleSystem* emitter = CCParticleFireworks::node();
    emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("Images/fire.png"));
	addChild(emitter);
	
	//sliderCtl = [self sliderCtl];
	//[[[[Director sharedDirector] openGLView] window] addSubview: sliderCtl]; 
}
Beispiel #3
0
/*
 * Added by LEETAEHO 11.07.27
 * loadPage를 VVPageFactory 없이 가능하도록 추가한 함수
 */
bool VVBookScene::loadPage(VVPageBase* page, VVBookSceneTransitionType type)
{
    if (isActionOngoing) {
        return false;
    }
    else
    {
        if (!curPage) {
            curPage = page;
            this->pageWillAppear(curPage);
            addChild(curPage, kTag_PageLayer, kTag_PageLayer);
            curPage->setBookDelegate(this); // 현재페이지 클래스에서 bookScene에 접근가능하도록
            curPage->onPageStart();
        } else {
            isActionOngoing = true;

            nextPage = page;
            this->pageWillAppear(nextPage);
            addChild(nextPage, kTag_PageBelow);
            if (type == VVBookSceneTransPushToLeft)
            {
                CCScaleTo *zoomOut = CCScaleTo::actionWithDuration(0.35, 0.2);
                CCScaleTo *zoomIn = CCScaleTo::actionWithDuration(0.35,1);
                CCFiniteTimeAction *action = transActionArray->getObjectAtIndex(type);
                nextPage->setScale(0.5);
                nextPage->setPosition(ccp(winSize.width,0));
                nextPage->runAction( CCSpawn::actions(zoomIn,action->copy(),NULL) );
                curPage->runAction(CCSequence::actions(CCSpawn::actions(zoomOut,action,NULL),CCCallFunc::actionWithTarget(this, callfunc_selector(VVBookScene::pageAniDone)),NULL));
            }
            else if (type == VVBookSceneTransPushToRight )
            {
                CCScaleTo *zoomOut = CCScaleTo::actionWithDuration(0.35, 0.2);
                CCScaleTo *zoomIn = CCScaleTo::actionWithDuration(0.35,1);
                CCFiniteTimeAction *action = transActionArray->getObjectAtIndex(type);
                nextPage->setScale(0.5);
                nextPage->setPosition(ccp(-winSize.width,0));
                nextPage->runAction( CCSpawn::actions(zoomIn,action->copy(),NULL) );
                curPage->setAnchorPoint(ccp(1,0));
                curPage->runAction( CCSequence::actions(CCSpawn::actions(zoomOut,action,NULL),CCCallFunc::actionWithTarget(this, callfunc_selector(VVBookScene::pageAniDone)),NULL));

            }
            else if (type == VVBookSceneTransFadeInOut)
            {
                nextPage->runAction( CCEaseExponentialOut::actionWithAction( CCActionTween::actionWithDuration(0.5,"opacity",0,255) ) );
                curPage->runAction( CCSequence::actions(CCEaseExponentialOut::actionWithAction( CCActionTween::actionWithDuration(0.5,"opacity",255,0) ),CCCallFunc::actionWithTarget(this, callfunc_selector(VVBookScene::pageAniDone)),NULL));
            }
            else
            {

                curPage->runAction(CCSequence::actions(transActionArray->getObjectAtIndex(type),CCCallFunc::actionWithTarget(this, callfunc_selector(VVBookScene::pageAniDone)),NULL));
            }
        }
    }

    return true;
}
Beispiel #4
0
void AvatarLayer::packAvatar() {
    m_isShowAll = false;
    CCFiniteTimeAction* callback = CCCallFunc::create(this, callfunc_selector(AvatarLayer::showSelectAvatar));
    CCFiniteTimeAction* scale = CCScaleTo::create(0.2, 1);
    CCFiniteTimeAction* move = CCMoveTo::create(0.2, m_avatarCenter);
    m_avatarList[0]->runAction(CCSequence::create(CCSpawn::create(scale, move, NULL), callback, NULL));
    for (int i = 1; i < MAX_AVATAR_COUNT; i++) {
        m_avatarList[i]->runAction(CCSpawn::create((CCFiniteTimeAction*)scale->copy(), move->copy(), NULL));
    }
}
Beispiel #5
0
void Fish::moveTo(CCPoint destination)
{
    CCPoint start = this->getParent()->convertToWorldSpace(this->getPosition());
    float speed = ccpDistance(destination, start) / 200;
    CCMoveTo* moveTo = CCMoveTo::create(speed ,destination);
    CCCallFunc* callfunc = CCCallFunc::create(this, callfunc_selector(Fish::moveEnd));
    
    CCFiniteTimeAction* seq = CCSequence::create(moveTo, callfunc, NULL);
    seq->setTag(k_Action_MoveTo);
    this->runAction(seq);
}
Beispiel #6
0
void BaseBug::moveToPoint(cocos2d::CCPoint point){
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    //CCNode* parent = this;//(CCSprite*)this->getParent();
    float _xSpace = abs(this->getPositionX()-size.width/2);
    float _ySpace = abs(this->getPositionY()-size.height/2);
    float space = sqrt(_xSpace*_xSpace+_ySpace*_ySpace);
    CCActionInterval* action = CCMoveTo::create(space/m_speed, CCPointMake(size.width/2, size.height/2));
    //action->setTag(1);
    CCFiniteTimeAction* finiteAction = CCSequence::create(action, CCCallFunc::create(this, callfunc_selector(BaseBug::onMoveEnd)), NULL);
    this->runAction(finiteAction);
    finiteAction->setTag(m_actionTag);
}
CCFiniteTimeAction* Animation::moveFromRightToCenter( float time )
{
    ccBezierConfig bezier;
    bezier.controlPoint_1 = ccp( CONTROL_POINT_X4, CONTROL_POINT_Y2 );
    bezier.controlPoint_2 = ccp( CONTROL_POINT_X3, CONTROL_POINT_Y2 );
    bezier.endPosition = BOX_LOC_CENTER;
    
    CCFiniteTimeAction* action = CCBezierTo::create( time, bezier );
    action->setTag( TAG_ACTION );
    
    return action;
}
Beispiel #8
0
//------------------------------------------------------------------
//
// ActionReverseSequence
//
//------------------------------------------------------------------
void ActionReverseSequence::onEnter()
{
    ActionsDemo::onEnter();

    alignSpritesLeft(1);

    CCActionInterval*  move1 = CCMoveBy::actionWithDuration(1, CGPointMake(250,0));
    CCActionInterval*  move2 = CCMoveBy::actionWithDuration(1, CGPointMake(0,50));
    CCFiniteTimeAction*  seq = CCSequence::actions( move1, move2, move1->reverse(), NULL);
    CCFiniteTimeAction*  action = CCSequence::actions( seq, seq->reverse(), NULL);

    m_grossini->runAction(action);
}
Beispiel #9
0
/**
 * 根据动画创建自身动作
 */
CCFiniteTimeAction * CartoonInfo::createAction(CCNode * self,CCNode *parent,const cocos2d::CCPoint &point,CCNode *target)
{
	// 判定是移动还是静止
	CCFiniteTimeAction *action = NULL;
	if (frameType == FOLLOW_FRAMES)
	{
		CartoonFollowAction * followAction = CartoonFollowAction::create(*this,target);
		action = followAction;
		followAction->isTempTarget = true;
		cartoonType = OTHER;
	}
	else if (!point.equals(CCPointZero) && frameType != TIME_FRAMES)
	{
		// 移动动画
		CartoonMoveAction * moveAction = CartoonMoveAction::create(*this,point);
		action = moveAction;
		if (cartoonType == OTHER)
		{
			moveAction->isTempTarget = true;
		}
	}
	else
	{
		// 静止动画
		CartoonAction* cartoonAction = CartoonAction::create(*this);
		action = cartoonAction;
		if (cartoonType == OTHER)
		{
			cartoonAction->isTempTarget = true;
		}
	}
	if (!action) return NULL;

	switch(cartoonType)
	{
		case OTHER:
		{
			CCSprite * temp = CCSprite::create();
			if (temp)
			{
				parent->addChild(temp);
				//temp->setAnchorPoint(ccp(0,0));
				temp->setPosition(self->getPosition());
				action->setTarget(temp);
			}
		}break;
	}
	return action;
}
Beispiel #10
0
//------------------------------------------------------------------
//
// ActionReverseSequence2
//
//------------------------------------------------------------------
void ActionReverseSequence2::onEnter()
{
    ActionsDemo::onEnter();

    alignSpritesLeft(2);


    // Test:
    //   Sequence should work both with IntervalAction and InstantActions
    CCActionInterval*  move1 = CCMoveBy::actionWithDuration(1, CGPointMake(250,0));
    CCActionInterval*  move2 = CCMoveBy::actionWithDuration(1, CGPointMake(0,50));
    CCToggleVisibility*  tog1 = new CCToggleVisibility();
    CCToggleVisibility*  tog2 = new CCToggleVisibility();
    tog1->autorelease();
    tog2->autorelease();
    CCFiniteTimeAction*  seq = CCSequence::actions( move1, tog1, move2, tog2, move1->reverse(), NULL);
    CCActionInterval*  action = CCRepeat::actionWithAction((CCActionInterval*)(CCSequence::actions( seq, seq->reverse(), NULL)), 3);



    // Test:
    //   Also test that the reverse of Hide is Show, and vice-versa
    m_kathia->runAction(action);

    CCActionInterval*  move_tamara = CCMoveBy::actionWithDuration(1, CGPointMake(100,0));
    CCActionInterval*  move_tamara2 = CCMoveBy::actionWithDuration(1, CGPointMake(50,0));
    CCActionInstant*  hide = new CCHide();
    hide->autorelease();
    CCFiniteTimeAction*  seq_tamara = CCSequence::actions( move_tamara, hide, move_tamara2, NULL);
    CCFiniteTimeAction*  seq_back = seq_tamara->reverse();
    m_tamara->runAction( CCSequence::actions( seq_tamara, seq_back, NULL));
}
Beispiel #11
0
//------------------------------------------------------------------
//
// ActionRotateJerk
//
//------------------------------------------------------------------
void ActionRotateJerk::onEnter()
{
    ActionsDemo::onEnter();

    centerSprites(2);

    CCFiniteTimeAction*  seq = CCSequence::actions(
                                   CCRotateTo::actionWithDuration(0.5f, -20),
                                   CCRotateTo::actionWithDuration(0.5f, 20),
                                   NULL);

    CCActionInterval*  rep1 = CCRepeat::actionWithAction(seq, 10);
    CCAction*  rep2 = CCRepeatForever::actionWithAction( (CCActionInterval*)(seq->copy()->autorelease()) );

    m_tamara->runAction(rep1);
    m_kathia->runAction(rep2);
}
Beispiel #12
0
//--------------------------------------------------
//
//
void CPet::AttackBeginCallBack( CCNode *pNode, void *d )
{
	//CBaseDataPet *pBaseDataPet = g_pClientLoader->GetBaseDataPetFromId(getID());
	//¬∫¬∫∆í‚Ä?
	//CBaseDataSkill *pBaseDataSkill = g_pClientLoader->GetBaseDataSkillFromId(pBaseDataPet->m_arrSkillId[0]);
	//startAnimation( pBaseDataSkill->m_arrSkillId[0],pBaseDataSkill->m_arrSkillId[1],1,callfunc_selector(CPet::AttackEndCallBack),this,pBaseDataSkill->m_arrSkillId[2],false,false );

	SAttackType *pAttackType = ( ( SAttackType* )d);
	if( CPET_STATE_NONE == pAttackType->Type )
	{
		CBaseDataAnimation *pAnimationData = g_pClientLoader->GetBaseDataAnimationFromId(m_PetData.ResId);
		PlayAnimation( pAnimationData->m_attack, 1, callfunc_selector(CPet::AttackEndCallBack), this, false, false );

		CBaseDataPet* pPetBaseData = g_pClientLoader->GetBaseDataPetFromId(m_PetData.petid);
		//‚àÜ‚Äô√ï¬ÆœÄ‚Ä¢¬™Àú¬±¬©¬™À?
		int damage = CExpressions::GetInstance()->GetDamage( CExpressions::GetInstance()->GetAttribute( pPetBaseData->dexaptitude, pPetBaseData->updex, pPetBaseData->initdex, m_PetData.petlevel ) );
		
	
		int skilldata = CExpressions::GetInstance()->GetAttribute( pPetBaseData->skillaptitude, pPetBaseData->upskill, pPetBaseData->initskill, m_PetData.petlevel );
		float pec = CExpressions::GetInstance()->GetSkillFrquency(skilldata, m_PetData.petlevel );
		if( CCRANDOM_0_1() <( pec / 2.0f ) )
		{
			m_pLockTarget->ApplyHurt(  damage + damage / 2 + rand() % (damage / 2 ), true );
		}
		else if( CCRANDOM_0_1() < 0.9f )
		{
			m_pLockTarget->ApplyHurt(  damage  );
		}
		else
		{
			m_pLockTarget->ApplyHurt(  0  );
		}
        
        if( CCUserDefault::sharedUserDefault()->getBoolForKey( "sound" ) )
        {
            string path = "data/audio/" + pPetBaseData->attack_sound;
            CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(path.c_str(), false);
        }

	}
	else
	{
		CCFiniteTimeAction *pTime = new CCFiniteTimeAction();
		pTime->setDuration( 1.2f );
		pTime->autorelease();

		CCFiniteTimeAction* pTimeAction = CCCallFuncN::actionWithTarget( this, callfuncN_selector(CPet::AttackOverCallBack) );

		runAction( CCSequence::actions( pTime, pTimeAction, NULL ) );
        
        g_pFightGroundLayer->removeChildByTag( FIRE_BALL_TAG, true );

		CBaseDataPet* pDataPet = g_pClientLoader->GetBaseDataPetFromId(m_PetData.petid);
		CBaseDataSkill* pDataSkill = g_pClientLoader->GetBaseDataSkillFromId(pDataPet->skillfield[m_PetData.skilllevel.skillsLevel[0]-1]);
		m_pLockTarget->ApplyHurt( pDataSkill->damage );

		if( CCUserDefault::sharedUserDefault()->getBoolForKey( "sound" ) )
		{
			CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("data/audio/Hit1.mp3", false);
		}

	}
}