android项目改动为竖屏的方法是改动xml文件:
在AndroidManifest.xml中设置
android:screenOrientation="portrait"
源码太多,直接敲不是有点累。这样学习不大好,好高骛远。
#include "Actions.h"
USING_NS_CC;
Scene *Actions::createScene() {
// Some upfront items that we need
auto 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 scene
auto scene = Scene::create();
// Create a node to hold non-sprites.
auto nodeItems = Node::create();
nodeItems->setName("nonSpritesNode");
// Create a node to hold menu
auto 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;
}