Beispiel #1
0
void EditorScene::openFile(const std::string& filePath)
{
    if ("" == filePath || " " == filePath)
    {
        this->showAlter("Please input file name");
        return;
    }
    string data = string();
    
    bool isExist = false;
    if (FileUtils::getInstance()->isFileExist(filePath))
    {
        
        data = FileUtils::getInstance()->getStringFromFile(filePath);
        //log("FILEPATH: %s\n", FileUtils::getInstance()->fullPathForFilename(filePath).c_str());
        
        this->setFileName(FileUtils::getInstance()->fullPathForFilename(filePath));
        isExist = true;
    }
    else
    {
        auto doc = FileUtils::getInstance()->getWritablePath();
        doc.append("D_Editor/").append(filePath);
        //log("FILEPATH: %s\n", doc.c_str());
        if (access(doc.c_str(), F_OK) == 0)
        {
            this->setFileName(doc);
            
            unsigned char* buffer = nullptr;
            ssize_t size = 0;
            size_t readsize;
           
            FILE *fp = fopen(doc.c_str(), "rt");
            if (!fp)
            {
                isExist = false;
            }
            fseek(fp,0,SEEK_END);
            size = ftell(fp);
            fseek(fp,0,SEEK_SET);
            
            buffer = (unsigned char*)malloc(sizeof(unsigned char) * (size + 1));
            buffer[size] = '\0';
            
            readsize = fread(buffer, sizeof(unsigned char), size, fp);
            fclose(fp);
            
            
            if (nullptr == buffer || 0 == readsize)
            {
                std::string msg = "Get data from file(";
                msg.append(filePath).append(") failed!");
                this->showAlter(msg);
            }
            else
            {
                data = string((const char*)buffer);
            }
            
            isExist = true;
        }
    }
    
    //log("Load Data : %s", data.c_str());
    
    if (isExist)
    {
        
        this->setFileData(data);
        //封装成Mission
        auto missionData = string();
        missionData.append("{");
        missionData.append("\"pages\":[");
        missionData.append(data);
        missionData.append("]}");
        
        rapidjson::Document doc;
        doc.Parse<0>(missionData.c_str());
        if (doc.HasParseError())
        {
            CCASSERT(false, "json parse error");
        }
        //clear last pages
        for (int i = 0; i < m_editorPages->count(); ++ i)
        {
            auto page = dynamic_cast<EditorPage*>(m_editorPages->getObjectAtIndex(i));
            page->removeFromParentAndCleanup(true);
        }
        m_editorPages->removeAllObjects();

        auto mission = Mission::createWithDataStr(missionData);
        this->setMission(mission);

        for (int i = 0; i < m_mission->getMissionPageCount(); ++ i)
        {
            auto missionPage = mission->getMissionPage(i);
            auto page = EditorPage::create();
            page->setEditorListener(this);
            page->loadMissionPage(missionPage);
            m_content->addChild(page);
            m_editorPages->addObject(page);
        }
        this->showPage(0);
        this->hideMenu(EditorListener::MenuState::FIRST);
    }
    else
    {
        this->showAlter("FILE IS NOT EXIST!");
    }
    
}
void ZhuangBeiListLayer::close(CCObject *sender)
{
    removeFromParentAndCleanup(true);
}
Beispiel #3
0
void UILayer::dispose()
{
    removeFromParentAndCleanup(true);
}
bool Level1::onContactBegin(cocos2d::PhysicsContact &contact)
{
	auto nodeA = contact.getShapeA()->getBody()->getNode();
	auto nodeB = contact.getShapeB()->getBody()->getNode();

	if (nodeA && nodeB)
	{
		//bullet and boss collision
		//if bullet
		if (nodeA->getTag() == 10)
		{
			//if boss
			if (nodeB->getTag() == 30)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("bossHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				boss->loseLives();
				if (boss->getLives() <= 0){
					boss->removehealthBar();
					//start level 2 switch statement
					level = 'B';
					//removes boss1
					nodeB->removeFromParentAndCleanup(true);
					//re-initilize level
					init();
					player->setLives();
				}
			}
			//if boss1bullet
			else if (nodeB->getTag() == 40)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
			//if boss2
			else if (nodeB->getTag() == 50)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("bossHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				boss2->loseLives();
				if (boss2->getLives() <= 0){
					activateGameCompleteScene(this);
				}
			}
			//if boss1bullet2
			else if (nodeB->getTag() == 60)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
			//if boss1bullet3
			else if (nodeB->getTag() == 70)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
			//if boss2bullet2
			else if (nodeB->getTag() == 80)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
			//if boss2bullet3
			else if (nodeB->getTag() == 90)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
			//if boss2bullet3
			else if (nodeB->getTag() == 100)
			{
				nodeA->removeFromParentAndCleanup(true);
				nodeB->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//bullet and boss collision
		//if boss
		else if (nodeA->getTag() == 30)
		{
			// if bullet
			if (nodeB->getTag() == 10)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("bossHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				boss->loseLives();
				if (boss->getLives() <= 0){
					boss->removehealthBar();
					level = 'B';
					nodeA->removeFromParentAndCleanup(true);
					init();
					player->setLives();
				}
			}
		}
		//bullet and boss collision
		//if boss2
		else if (nodeA->getTag() == 50)
		{
			//if player bullet
			if (nodeB->getTag() == 10)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("bossHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				boss2->loseLives();
				if (boss2->getLives() <= 0){
					activateGameCompleteScene(this);
					player->setLives();
				}
			}
		}
		//player and bossbullet collision
		//if boss1bullet1
		else if (nodeA->getTag() == 40)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and bossbullet2 collision
		//if boss1bullet2
		else if (nodeA->getTag() == 60)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and boss1bullet collision
		//if boss1bullet3
		else if (nodeA->getTag() == 70)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and bossbullet collision
		//if boss2bullet1
		else if (nodeA->getTag() == 80)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}

			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and bossbullet collision
		//if boss2bullet2
		else if (nodeA->getTag() == 90)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and bossbullet collision
		//if boss2bullet3
		else if (nodeA->getTag() == 100)
		{
			//if player
			if (nodeB->getTag() == 20)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeA->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bullet
			else if (nodeB->getTag() == 10)
			{
				nodeB->removeFromParentAndCleanup(true);
				nodeA->removeFromParentAndCleanup(true);
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("metalBang.wav");
			}
		}
		//player and bossbullet collision
		//if player
		else if (nodeA->getTag() == 20)
		{
			//if bossbullet
			if (nodeB->getTag() == 40)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					//removes bossbullet
					activateGameOverScene(this);
				}
			}
			//if bossbullet2
			else if (nodeB->getTag() == 60)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if bossbullet3
			else if (nodeB->getTag() == 70)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if boss2bullet1
			else if (nodeB->getTag() == 80)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if boss2bullet2
			else if (nodeB->getTag() == 90)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
			//if boss2bullet3
			else if (nodeB->getTag() == 100)
			{
				CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("playerHit.wav");
				nodeB->removeFromParentAndCleanup(true);
				player->loseLives();
				if (player->getLives() <= 0){
					activateGameOverScene(this);
				}
			}
		}
	}
	return true;
}
Beispiel #5
0
void RowObject::removeFromGame()
{
    unscheduleUpdate();
    
    removeFromParentAndCleanup(true);
}
Beispiel #6
0
//******************************************************************************
// ccTouchBegan
//******************************************************************************
bool CommDlg::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
    CCPoint touchLocation = touch->locationInView( touch->view() );	
    touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation );
    CCPoint pos = convertToNodeSpace( touchLocation );
    
    CCNode* nodeOk = getChildByTag(kCommBtnTagOk);
    CCNode* nodeCancel = getChildByTag(kCommBtnTagCancel);
    
    CCPoint pt;
    CCSize sz;
    bool bRet = false;
    
    if(nodeOk){
        pt = nodeOk->getPosition();
        sz = nodeOk->getContentSize();
        
        bRet = CCRect::CCRectContainsPoint(CCRectMake(pt.x - sz.width * 0.5, 
                                                           pt.y - sz.height * 0.5, 
                                                           sz.width, 
                                                           sz.height), 
                                                pos);
        
        if(bRet){
            m_ret.bOk = true;
            const char* errMsg = CGameData::Inst()->getErrMsg();
            if(errMsg != NULL){
                string eMsg = errMsg;
                if (eMsg.find("武将不存在")!=string::npos)
                    MainScene::Inst()->reLogin();
                else
                    (m_pListener->*m_pfnSelector)(&m_ret);
            }else
                (m_pListener->*m_pfnSelector)(&m_ret);
        }
    }
    

    if((!bRet) && (nodeCancel)){
        pt = nodeCancel->getPosition();
        sz = nodeCancel->getContentSize();
        
        bool bRet = CCRect::CCRectContainsPoint(CCRectMake(pt.x - sz.width * 0.5, 
                                                      pt.y - sz.height * 0.5, 
                                                      sz.width, 
                                                      sz.height), 
                                           pos);
        
        if(bRet){
            if (m_iRc == kReloginRc) {
                MainScene::Inst()->forceExitFight();
                SaveData::Inst()->destorySavedData();
                SaveData::Inst()->destorySavedFile();
                OrgSaveData::Inst()->destorySavedData();
                OrgSaveData::Inst()->destorySavedFile();
                MainScene::Inst()->reLogin();
                
                if (m_pParent) {
                    removeFromParentAndCleanup(true);
                }
            }
            else{
                m_ret.bOk = false;
                (m_pListener->*m_pfnSelector)(&m_ret);
            }
        }
    }

    return true;
}
Beispiel #7
0
void QiangHuaLayer::close(CCObject *sender)
{
    removeFromParentAndCleanup(true);
}
Scene* Chapter2Level1::createScene()
{
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // some upfront items that we need
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
    Size playingSize = Size(visibleSize.width, visibleSize.height - (visibleSize.height/8)); // actual playing size to work with

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a scene
    // 'scene' is an autorelease object
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    auto scene = Scene::create();
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a node to hold all of the labels
    // create the player and score labels
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    int paddingX = 20;
    int paddingY = 20;
    
    auto labelNode = Node::create();
    
    auto player1 = Label::createWithTTF("Player 1", "fonts/Marker Felt.ttf", 32);
    auto player2 = Label::createWithTTF("Player 2", "fonts/Marker Felt.ttf", 32);
    
    auto player1Score = Label::createWithTTF("00000", "fonts/Marker Felt.ttf", 32);
    auto player2Score = Label::createWithTTF("00000", "fonts/Marker Felt.ttf", 32);
    
    labelNode->addChild(player1, -2);
    labelNode->addChild(player1Score, -1);
    labelNode->addChild(player2, 1);
    labelNode->addChild(player2Score, 2);
    
    player1->setPosition(Vec2(0 + player1->getContentSize().width / 2 + paddingX,
                              visibleSize.height - player1->getContentSize().height / 2 - paddingY));
    
    player1Score->setPosition(Vec2(0 + player1->getPositionX() + player1->getContentSize().width + paddingX,
                                   visibleSize.height - player1->getContentSize().height / 2 - paddingY));
    
    player2Score->setPosition(Vec2(visibleSize.width - player2Score->getContentSize().width / 2 - paddingX,
                                   visibleSize.height - player2Score->getContentSize().height / 2 - paddingY));
    
    player2->setPosition(Vec2(player2Score->getPositionX() - player2Score->getContentSize().width - paddingX,
                              visibleSize.height - player2Score->getContentSize().height / 2 - paddingY));
    
    scene->addChild(labelNode, 0);
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a node to hold non-sprites.
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    auto nodeItems = Node::create();
    nodeItems->setName("nodeItems");
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a path/walkway
    // depending upon how large the screen is we need to decide how many blocks to lay down.
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    auto testSprite = Sprite::create("ZigzagForest_Square.png");
    
    int howMany = std::ceil(visibleSize.width / testSprite->getContentSize().width);
    
    int sX = 0; // act as a counter for setPosition x coordinate.
    int sY = 0; // act as a counter for setPosition y coordinate.
    
    playingSize = Size(visibleSize.width, visibleSize.height - testSprite->getContentSize().height);
    
    for (int i=0; i < howMany; i++)
    {
        auto sprite = Sprite::create("ZigzagForest_Square.png");
        sprite->setAnchorPoint(Vec2(0,0));
        sprite->setPosition(sX,sY);
        
        sX += sprite->getContentSize().width;
        
        nodeItems->addChild(sprite, -1);
    }
    
    testSprite = NULL;
    
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a few blocks as obstables
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    testSprite = Sprite::create("ZigzagGrass_Mud_Round.png");
    
    // left side blocks
    sX = visibleSize.width/4 - testSprite->getContentSize().width;
    sY = playingSize.height/2 - testSprite->getContentSize().height * 2;
    
    for (int i=0; i < 3; i++)
    {
        auto sprite = Sprite::create("ZigzagGrass_Mud_Round.png");
        sprite->setAnchorPoint(Vec2(0,0));
        sprite->setPosition(sX,sY);
        
        sX += sprite->getContentSize().width;
        
        if (i == 1)
        {
            sprite->setName("middleBlock1");
        }
        
        nodeItems->addChild(sprite, 1);
    }
    
    // right side blocks
    sX = (visibleSize.width/2 + visibleSize.width/4) - testSprite->getContentSize().width;
    sY = playingSize.height/2 - testSprite->getContentSize().height * 2;
    
    for (int i=0; i < 3; i++)
    {
        auto sprite = Sprite::create("ZigzagGrass_Mud_Round.png");
        sprite->setAnchorPoint(Vec2(0,0));
        sprite->setPosition(sX,sY);
        
        sX += sprite->getContentSize().width;
        
        if (i == 1)
        {
            sprite->setName("middleBlock2");
        }
        
        scene->addChild(sprite, 1);
    }
    
    // center blocks
    sX = visibleSize.width/2 - testSprite->getContentSize().width;
    sY = (playingSize.height/2 + playingSize.height/4) - testSprite->getContentSize().height * 2;
    
    for (int i=0; i < 3; i++)
    {
        auto sprite = Sprite::create("ZigzagGrass_Mud_Round.png");
        sprite->setAnchorPoint(Vec2(0,0));
        sprite->setPosition(sX,sY);
        
        sX += sprite->getContentSize().width;
        
        nodeItems->addChild(sprite, 1);
    }
    
    testSprite = NULL;
    
    scene->addChild(nodeItems, 1);
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a node to hold sprites
    // create a sprite
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    auto spriteNode = Node::create();
    spriteNode->setName("spriteNode");
    
    auto sprite1 = Sprite::create("Blue_Front1.png");
    sprite1->setAnchorPoint(Vec2(0,0));
    sprite1->setPosition(100, (visibleSize.height - playingSize.height));
    sprite1->setName("mainSprite");
    
    spriteNode->addChild(sprite1, 1);
    
    scene->addChild(spriteNode, 1);
    
    //sprite1->scheduleOnce([&](float dt) {
    //    // the local variable "sprite1" will go out of scope, so I have to get it from "this"
    //    auto anode = Director::getInstance()->getRunningScene()->getChildByName("spriteNode");
    //    auto bnode = anode->getChildByName("mainSprite");
    //
    //    //auto moveBy = MoveBy::create(2, Point(400,0));
    //
    //    //bnode->runAction(moveBy);
    //}, 5, "udpate_key");
    
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // create a node to hold menu
    // create a menu
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    auto menuNode = Node::create();
    menuNode->setName("menuNode");
    
    auto menuItem1 = MenuItemFont::create("Demo Parent/Child");
    menuItem1->setFontNameObj("fonts/Marker Felt.ttf");
    menuItem1->setFontSizeObj(32);
    
    menuItem1->setCallback([&](cocos2d::Ref *sender) {
        auto anode = Director::getInstance()->getRunningScene()->getChildByName("spriteNode");
        auto bnode = anode->getChildByName("mainSprite");
        
        auto cnode = Director::getInstance()->getRunningScene()->getChildByName("nodeItems");
        auto dnode = cnode->getChildByName("middleBlock1");
        
        // add a few more sprites
        auto sprite1 = Sprite::create("LightBlue_Front1.png");
        sprite1->setAnchorPoint(Vec2(0,0));
        sprite1->setName("childSprite1");
        
        bnode->addChild(sprite1, 1);

        sprite1->setPosition(dnode->getPositionX(), dnode->getPositionY());
        
        auto sprite2 = Sprite::create("White_Front1.png");
        sprite2->setAnchorPoint(Vec2(0,0));
        sprite2->setName("childSprite2");
        
        bnode->addChild(sprite2, 1);
        
        sprite2->setPosition(dnode->getPositionX() - dnode->getContentSize().width * 3, dnode->getPositionY());
        
        // hide the menu option
        auto ynode = Director::getInstance()->getRunningScene()->getChildByName("menuNode");
        auto znode = ynode->getChildByName("menu");
        znode->removeFromParentAndCleanup(true);
        
        // schedule an action after 3 seconds
        bnode->scheduleOnce([&](float dt) {
            auto anode = Director::getInstance()->getRunningScene()->getChildByName("spriteNode");
            auto bnode = anode->getChildByName("mainSprite");
            
            bnode->setRotation(40.0f);
            
            auto delay = DelayTime::create(4.0f);
            bnode->runAction(delay);
            
            bnode->setScale(2.0f);
            
            // You could also use an Action and Sequence combination to do this.
            //auto rotateBy = RotateBy::create(2, 40.0f);
            //auto scaleBy = ScaleTo::create(2, 2.0f);
        
            //auto seq = Sequence::create(rotateBy, scaleBy, NULL);
            
            //bnode->runAction(seq);
            
        }, 3, "udpate_key");
    });

    auto menu = Menu::create(menuItem1, NULL);
    menu->setName("menu");
    menuNode->addChild(menu, 1);
    menu->setPosition(visibleSize.width / 2, visibleSize.height - menuItem1->getContentSize().height * 2);
    
    scene->addChild(menuNode, 2);
    
    // return the scene
    return scene;
}
Beispiel #9
0
void Bullet::hide(){
    stopAnim();
    removeFromParentAndCleanup(false);
}
Beispiel #10
0
void StrayBulletLayer::removeWhenTimeout()
{
	removeFromParentAndCleanup(true);
}
Beispiel #11
0
void ScoreLayer::deleteProps(Ref *){
	int i = nowTools.size();
	auto sp = nowTools.at(i-1);
	sp->removeFromParentAndCleanup(true);
	nowTools.pop_back();
}
Beispiel #12
0
void Label::alignText()
{
    if (_fontAtlas == nullptr || _currentUTF16String.empty())
    {
        setContentSize(Size::ZERO);
        return;
    }

    _fontAtlas->prepareLetterDefinitions(_currentUTF16String);
    auto& textures = _fontAtlas->getTextures();
    if (textures.size() > _batchNodes.size())
    {
        for (auto index = _batchNodes.size(); index < textures.size(); ++index)
        {
            auto batchNode = SpriteBatchNode::createWithTexture(textures.at(index));
            batchNode->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT);
            batchNode->setPosition(Vec2::ZERO);
            Node::addChild(batchNode,0,Node::INVALID_TAG);
            _batchNodes.push_back(batchNode);
        }
    }
    LabelTextFormatter::createStringSprites(this);
    if(_maxLineWidth > 0 && _contentSize.width > _maxLineWidth && LabelTextFormatter::multilineText(this) )
        LabelTextFormatter::createStringSprites(this);

    if(_labelWidth > 0 || (_currNumLines > 1 && _hAlignment != TextHAlignment::LEFT))
        LabelTextFormatter::alignText(this);

    if (!_children.empty())
    {
        int strLen = static_cast<int>(_currentUTF16String.length());
        Rect uvRect;
        Sprite* letterSprite;
        for (auto index = 0; index < _children.size();) {
            auto child = _children.at(index);
            int tag = child->getTag();
            if (tag >= strLen)
            {
                child->removeFromParentAndCleanup(true);
            }
            else if (tag >= 0)
            {
                letterSprite = dynamic_cast<Sprite*>(child);
                if (letterSprite)
                {
                    auto& letterDef = _lettersInfo[tag].def;
                    uvRect.size.height = letterDef.height;
                    uvRect.size.width = letterDef.width;
                    uvRect.origin.x = letterDef.U;
                    uvRect.origin.y = letterDef.V;

                    letterSprite->setBatchNode(_batchNodes[letterDef.textureID]);
                    letterSprite->setTextureRect(uvRect, false, uvRect.size);
                    letterSprite->setPosition(_lettersInfo[tag].position.x + letterDef.width/2,
                                              _lettersInfo[tag].position.y - letterDef.height/2);
                }
                ++index;
            }
            else
            {
                ++index;
            }
        }
    }

    for (const auto& batchNode : _batchNodes)
    {
        batchNode->getTextureAtlas()->removeAllQuads();
    }

    updateQuads();

    updateColor();
}
Beispiel #13
0
void SplitBomb::hide(){
    stopAnim();
    removeFromParentAndCleanup(false);
}
Beispiel #14
0
void PauseLayer::destroy()
{
    removeFromParentAndCleanup(true);
}