coco2d-x 基础系列 (05) Actions基本操作

来源:互联网 发布:阿里云服务器宕机 编辑:程序博客网 时间:2024/05/22 17:26

android项目改动为竖屏的方法是改动xml文件:

AndroidManifest.xml中设置

android:screenOrientation="portrait"

源码太多,直接敲不是有点累。这样学习不大好,好高骛远。

#include "Actions.h"USING_NS_CC;Scene *Actions::createScene() {// Some upfront items that we needauto dirs = Director::getInstance();Size visibleSize = Size(dirs->getVisibleSize().width, dirs->getVisibleSize().height - 100);Vec2 origin = dirs->getVisibleOrigin();Size playingSize = Size(visibleSize.width, visibleSize.height / 8 * 7);// Create a sceneauto scene = Scene::create();// Create a node to hold non-sprites.auto nodeItems = Node::create();nodeItems->setName("nonSpritesNode");// Create a node to hold menuauto menuNode = Node::create();menuNode->setName("menuNode");int index = 2;auto menuItem1 = MenuItemFont::create("First: Create a Sprite");    menuItem1->setFontNameObj("Marker Felt.ttf");    menuItem1->setFontSizeObj(32);    menuItem1->setName("menuItem1");    menuItem1->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem1->setCallback([&](cocos2d::Ref *sender) {        auto dirs = Director::getInstance()->getRunningScene();        auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite1");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem1");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem2");        dnode->setVisible(true);    });        auto menuItem2 = MenuItemFont::create("Next: Create a Sprite from a Rect");    menuItem2->setFontNameObj("Marker Felt.ttf");    menuItem2->setFontSizeObj(32);    menuItem2->setName("menuItem2");    menuItem2->setVisible(false);    menuItem2->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem2->setCallback([&](cocos2d::Ref *sender) {        auto dirs = Director::getInstance()->getRunningScene();        auto newSprite = Sprite::create("Blue_Front1.png", Rect(0,0,50,50));        newSprite->setPosition(250, 256);        newSprite->setName("sprite2");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem2");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem3");        dnode->setVisible(true);    });        auto menuItem3 = MenuItemFont::create("Next: Create a Sprite from SpriteFrameCache");    menuItem3->setFontNameObj("Marker Felt.ttf");    menuItem3->setFontSizeObj(32);    menuItem3->setName("menuItem3");    menuItem3->setVisible(false);    menuItem3->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem3->setCallback([&](cocos2d::Ref *sender) {        auto dirs = Director::getInstance()->getRunningScene();        auto spritecache = SpriteFrameCache::getInstance();        spritecache->addSpriteFramesWithFile("sprites.plist");        auto newSprite = Sprite::createWithSpriteFrameName("Blue_Front1.png");        newSprite->setPosition(400, 256);        newSprite->setName("sprite3");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);        auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem3");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem4");        dnode->setVisible(true);    });        auto menuItem4 = MenuItemFont::create("Next: Create a Sprite from SpriteFrame");    menuItem4->setFontNameObj("Marker Felt.ttf");    menuItem4->setFontSizeObj(32);    menuItem4->setName("menuItem4");    menuItem4->setVisible(false);    menuItem4->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem4->setCallback([&](cocos2d::Ref *sender) {        auto dirs = Director::getInstance()->getRunningScene();        auto spritecache = SpriteFrameCache::getInstance();        spritecache->addSpriteFramesWithFile("sprites.plist");                auto newspriteFrame = SpriteFrame::create("Blue_Front1.png", Rect(0,0,50,50));                auto newSprite = Sprite::createWithSpriteFrame(newspriteFrame);        newSprite->setPosition(550, 256);        newSprite->setName("sprite4");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem4");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem5");        dnode->setVisible(true);    });        auto menuItem5 = MenuItemFont::create("Next: Scale a Sprite");    menuItem5->setFontNameObj("Marker Felt.ttf");    menuItem5->setFontSizeObj(32);    menuItem5->setName("menuItem5");    menuItem5->setVisible(false);    menuItem5->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem5->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite1");        dirs->removeChildByName("sprite2");        dirs->removeChildByName("sprite3");        dirs->removeChildByName("sprite4");        auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite5");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto point00 = Sprite::create("dot.png");        point00->setName("point00");        point00->setPosition(newSprite->getPosition());        dirs->addChild(point00,2);                auto newSpriteScaleXY = Sprite::create("Blue_Front1.png");        newSpriteScaleXY->setPosition(300,256);        newSpriteScaleXY->setName("sprite6");        newSpriteScaleXY->setAnchorPoint(Vec2(0.5,0.5));        newSpriteScaleXY->setScale(2.0f);        dirs->addChild(newSpriteScaleXY,1);                auto pointXY = Sprite::create("dot.png");        pointXY->setName("pointXY");        pointXY->setPosition(newSpriteScaleXY->getPosition());        dirs->addChild(pointXY,2);                auto newSpriteScaleX = Sprite::create("Blue_Front1.png");        newSpriteScaleX->setPosition(500,256);        newSpriteScaleX->setName("sprite7");        newSpriteScaleX->setAnchorPoint(Vec2(0.5,0.5));        newSpriteScaleX->setScaleX(2.0f);        dirs->addChild(newSpriteScaleX,1);                auto pointX = Sprite::create("dot.png");        pointX->setName("pointX");        pointX->setPosition(newSpriteScaleX->getPosition());        dirs->addChild(pointX,2);                auto newSpriteScaleY = Sprite::create("Blue_Front1.png");        newSpriteScaleY->setPosition(800, 256);        newSpriteScaleY->setName("sprite8");        newSpriteScaleY->setAnchorPoint(Vec2(0.5,0.5));        newSpriteScaleY->setScaleY(2.0f);        dirs->addChild(newSpriteScaleY,1);                auto pointY = Sprite::create("dot.png");        pointY->setName("pointY");        pointY->setPosition(newSpriteScaleY->getPosition());        dirs->addChild(pointY,2);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem5");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem6");        dnode->setVisible(true);    });        auto menuItem6 = MenuItemFont::create("Next: Anchor Point and Sprite");    menuItem6->setFontNameObj("Marker Felt.ttf");    menuItem6->setFontSizeObj(32);    menuItem6->setName("menuItem6");    menuItem6->setVisible(false);    menuItem6->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem6->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite5");        dirs->removeChildByName("sprite6");        dirs->removeChildByName("sprite7");        dirs->removeChildByName("sprite8");        dirs->removeChildByName("point00");        dirs->removeChildByName("pointXY");        dirs->removeChildByName("pointX");        dirs->removeChildByName("pointY");                auto newSprite00 = Sprite::create("Blue_Front1.png");        newSprite00->setPosition(100, 256);        newSprite00->setName("sprite9");        newSprite00->setAnchorPoint(Vec2(0,0));        dirs->addChild(newSprite00,1);                auto point00 = Sprite::create("dot.png");        point00->setName("point00");        point00->setPosition(newSprite00->getPosition());        dirs->addChild(point00,2);                auto newSprite01 = Sprite::create("Blue_Front1.png");        newSprite01->setPosition(250, 256);        newSprite01->setName("sprite10");        newSprite01->setAnchorPoint(Vec2(0,1));        dirs->addChild(newSprite01,1);                auto point01 = Sprite::create("dot.png");        point01->setName("point01");        point01->setPosition(newSprite01->getPosition());        dirs->addChild(point01,2);                auto newSprite10 = Sprite::create("Blue_Front1.png");        newSprite10->setPosition(400, 256);        newSprite10->setName("sprite11");        newSprite10->setAnchorPoint(Vec2(1,0));        dirs->addChild(newSprite10,1);                auto point10 = Sprite::create("dot.png");        point10->setName("point10");        point10->setPosition(newSprite10->getPosition());        dirs->addChild(point10,2);                auto newSprite11 = Sprite::create("Blue_Front1.png");        newSprite11->setPosition(550, 256);        newSprite11->setName("sprite12");        newSprite11->setAnchorPoint(Vec2(1,1));        dirs->addChild(newSprite11,1);                auto point11 = Sprite::create("dot.png");        point11->setName("point11");        point11->setPosition(newSprite11->getPosition());        dirs->addChild(point11,2);                auto newSprite22 = Sprite::create("Blue_Front1.png");        newSprite22->setPosition(700, 256);        newSprite22->setName("sprite13");        newSprite22->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite22,1);                auto point22 = Sprite::create("dot.png");        point22->setName("point22");        point22->setPosition(newSprite22->getPosition());        dirs->addChild(point22,2);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem6");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem7");        dnode->setVisible(true);    });    auto menuItem7 = MenuItemFont::create("Next: Skew a Sprite");    menuItem7->setFontNameObj("Marker Felt.ttf");    menuItem7->setFontSizeObj(32);    menuItem7->setName("menuItem7");    menuItem7->setVisible(false);    menuItem7->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem7->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite9");        dirs->removeChildByName("sprite10");        dirs->removeChildByName("sprite11");        dirs->removeChildByName("sprite12");        dirs->removeChildByName("sprite13");        dirs->removeChildByName("point00");        dirs->removeChildByName("point01");        dirs->removeChildByName("point10");        dirs->removeChildByName("point11");        dirs->removeChildByName("point22");                auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite14");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto pointN = Sprite::create("dot.png");        pointN->setName("pointN");        pointN->setPosition(newSprite->getPosition());        dirs->addChild(pointN,2);                auto newSpriteSkewX = Sprite::create("Blue_Front1.png");        newSpriteSkewX->setPosition(250, 256);        newSpriteSkewX->setName("sprite15");        newSpriteSkewX->setAnchorPoint(Vec2(0.5,0.5));        newSpriteSkewX->setSkewX(20.0f);        dirs->addChild(newSpriteSkewX,1);                auto pointX = Sprite::create("dot.png");        pointX->setName("pointX");        pointX->setPosition(newSpriteSkewX->getPosition());        dirs->addChild(pointX,2);                auto newSpriteSkewY = Sprite::create("Blue_Front1.png");        newSpriteSkewY->setPosition(400, 256);        newSpriteSkewY->setName("sprite16");        newSpriteSkewY->setAnchorPoint(Vec2(0.5,0.5));        newSpriteSkewY->setSkewY(20.0f);        dirs->addChild(newSpriteSkewY,1);                auto pointY = Sprite::create("dot.png");        pointY->setName("pointY");        pointY->setPosition(newSpriteSkewY->getPosition());        dirs->addChild(pointY,2);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem7");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem8");        dnode->setVisible(true);    });    auto menuItem8 = MenuItemFont::create("Next: Rotate a Sprite");    menuItem8->setFontNameObj("Marker Felt.ttf");    menuItem8->setFontSizeObj(32);    menuItem8->setName("menuItem8");    menuItem8->setVisible(false);    menuItem8->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem8->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite14");        dirs->removeChildByName("sprite15");        dirs->removeChildByName("sprite16");        dirs->removeChildByName("pointN");        dirs->removeChildByName("pointX");        dirs->removeChildByName("pointY");                auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite17");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto point00 = Sprite::create("dot.png");        point00->setName("point00");        point00->setPosition(newSprite->getPosition());        dirs->addChild(point00,2);                auto newSpriteRotateP20 = Sprite::create("Blue_Front1.png");        newSpriteRotateP20->setPosition(250, 256);        newSpriteRotateP20->setName("sprite18");        newSpriteRotateP20->setAnchorPoint(Vec2(0.5,0.5));        newSpriteRotateP20->setRotation(20.0f);        dirs->addChild(newSpriteRotateP20,1);                auto pointP20 = Sprite::create("dot.png");        pointP20->setName("pointP20");        pointP20->setPosition(newSpriteRotateP20->getPosition());        dirs->addChild(pointP20,2);                auto newSpriteRotateN20 = Sprite::create("Blue_Front1.png");        newSpriteRotateN20->setPosition(400, 256);        newSpriteRotateN20->setName("sprite19");        newSpriteRotateN20->setAnchorPoint(Vec2(0.5,0.5));        newSpriteRotateN20->setRotation(-20.0f);        dirs->addChild(newSpriteRotateN20,1);                auto pointN20 = Sprite::create("dot.png");        pointN20->setName("pointN20");        pointN20->setPosition(newSpriteRotateN20->getPosition());        dirs->addChild(pointN20,2);                auto newSpriteRotateP60 = Sprite::create("Blue_Front1.png");        newSpriteRotateP60->setPosition(550, 256);        newSpriteRotateP60->setName("sprite20");        newSpriteRotateP60->setAnchorPoint(Vec2(0.5,0.5));        newSpriteRotateP60->setRotation(60.0f);        dirs->addChild(newSpriteRotateP60,1);                auto pointP60 = Sprite::create("dot.png");        pointP60->setName("pointP60");        pointP60->setPosition(newSpriteRotateP60->getPosition());        dirs->addChild(pointP60,2);                auto newSpriteRotateN60 = Sprite::create("Blue_Front1.png");        newSpriteRotateN60->setPosition(700, 256);        newSpriteRotateN60->setName("sprite21");        newSpriteRotateN60->setAnchorPoint(Vec2(0.5,0.5));        newSpriteRotateN60->setRotation(-60.0f);        dirs->addChild(newSpriteRotateN60,1);                auto pointN60 = Sprite::create("dot.png");        pointN60->setName("pointN60");        pointN60->setPosition(newSpriteRotateN60->getPosition());        dirs->addChild(pointN60,2);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem8");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem9");        dnode->setVisible(true);    });        auto menuItem9 = MenuItemFont::create("Next: Change the Color of a Sprite");    menuItem9->setFontNameObj("Marker Felt.ttf");    menuItem9->setFontSizeObj(32);    menuItem9->setName("menuItem9");    menuItem9->setVisible(false);    menuItem9->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem9->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite18");        dirs->removeChildByName("sprite19");        dirs->removeChildByName("sprite20");        dirs->removeChildByName("sprite21");        dirs->removeChildByName("point00");        dirs->removeChildByName("pointP20");        dirs->removeChildByName("pointN20");        dirs->removeChildByName("pointP60");        dirs->removeChildByName("pointN60");                auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite30");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        dirs->addChild(newSprite,1);                auto newSprite2 = Sprite::create("Blue_Front1.png");        newSprite2->setPosition(200, 256);        newSprite2->setName("sprite31");        newSprite2->setAnchorPoint(Vec2(0.5,0.5));        newSprite2->setColor(Color3B(155, 200, 50));        dirs->addChild(newSprite2,1);                auto newSprite3 = Sprite::create("Blue_Front1.png");        newSprite3->setPosition(300, 256);        newSprite3->setName("sprite32");        newSprite3->setAnchorPoint(Vec2(0.5,0.5));        newSprite3->setColor(Color3B(10, 230, 100));        dirs->addChild(newSprite3,1);                auto newSprite4 = Sprite::create("Blue_Front1.png");        newSprite4->setPosition(400, 256);        newSprite4->setName("sprite33");        newSprite4->setAnchorPoint(Vec2(0.5,0.5));        newSprite4->setColor(Color3B(100, 101, 230));        dirs->addChild(newSprite4,1);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem9");        cnode->setVisible(false);        auto dnode = bnode->getChildByName("menuItem10");        dnode->setVisible(true);    });        auto menuItem10 = MenuItemFont::create("Next: Change the Color of a Sprite");    menuItem10->setFontNameObj("Marker Felt.ttf");    menuItem10->setFontSizeObj(32);    menuItem10->setName("menuItem10");    menuItem10->setVisible(false);    menuItem10->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x,                           (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40));    menuItem10->setCallback([&](cocos2d::Ref *sender) {        // hide everything else on the screen        auto dirs = Director::getInstance()->getRunningScene();        dirs->removeChildByName("sprite30");        dirs->removeChildByName("sprite31");        dirs->removeChildByName("sprite32");        dirs->removeChildByName("sprite33");                auto newSprite = Sprite::create("Blue_Front1.png");        newSprite->setPosition(100, 256);        newSprite->setName("sprite34");        newSprite->setAnchorPoint(Vec2(0.5,0.5));        newSprite->setOpacity(0.0f);        dirs->addChild(newSprite,1);                auto newSprite2 = Sprite::create("Blue_Front1.png");        newSprite2->setPosition(200, 256);        newSprite2->setName("sprite35");        newSprite2->setAnchorPoint(Vec2(0.5,0.5));        newSprite2->setOpacity(99);        dirs->addChild(newSprite2,1);                auto newSprite3 = Sprite::create("Blue_Front1.png");        newSprite3->setPosition(300, 256);        newSprite3->setName("sprite36");        newSprite3->setAnchorPoint(Vec2(0.5,0.5));        newSprite3->setOpacity(89);        dirs->addChild(newSprite3,1);                auto newSprite4 = Sprite::create("Blue_Front1.png");        newSprite4->setPosition(400, 256);        newSprite4->setName("sprite37");                newSprite4->setAnchorPoint(Vec2(0.5,0.5));        newSprite4->setOpacity(79);        dirs->addChild(newSprite4,1);                auto anode = dirs->getChildByName("menuNode");        auto bnode = anode->getChildByName("menu");        auto cnode = bnode->getChildByName("menuItem10");        cnode->setVisible(false);        //auto dnode = bnode->getChildByName("menuItem10");        //dnode->setVisible(true);    });    auto menu = Menu::create(menuItem1, menuItem2, menuItem3, menuItem4, menuItem5, menuItem6,                             menuItem7, menuItem8, menuItem9, menuItem10, NULL);    menu->setName("menu");    menuNode->addChild(menu, 1);    menu->setPosition(Vec2(0, -60));        scene->addChild(menuNode, 2);        // return the scene    return scene;}


0 0
原创粉丝点击