内容介绍:
导演-》场景-》层-》精灵 DirectorSceneLayerSprite 创建场景、层、精灵都是用::create(),静态方法创建。 创建导演用:Director::getInstance(); Sprite精灵是一个2D图像,可以移动、旋转、放大缩小、活动,还能进行其他变化。精灵(通过Sprite”类实现)还可以有其他精灵当作子类。当父类被转变时,该父类下的所有子类也将被转变。 获得游戏界面可见区域大小: SizevisibleSize=Director::getInstance()->getVisibleSize(); 宽:visibleSize.width 高:visibleSize.height 【坐标】 cocos2d游戏中:起点坐标(x=0,y=0)位于左下角,这意味着屏幕位于X轴从屏幕最左边开始,由左向右渐增Y轴坐标从屏幕最下方开始,由下向上渐增。 锚点:ccp(0.5,0.5),0.5代表x,Y方向的一半,值位于0和1之间 由于每个类都继承自CCNode(Cocos2d-x的最顶层类),所以每个类都会默认有anchorPoint属性。当我们在一个位置画一个的对象的时候,Cocos2d-x会合并属性位置和anchorPoint。当然,当旋转一个对象时,Cocos2d-x会围绕绕anchorPoint旋转的 每个note节点的锚点默认都是0.5,0.5 setIsRelativeAnthorPoint(true);//设置坐标以锚点算 Director::convertToGl(CCPoint);//转成openGl坐标 Director::convertToUl(CCPoint);//转成屏幕的坐标 【UI系统】 1.字体,标签 LabelTTF*l=LabelTTF:create("Hello","宋体",30); l->setPosition(ccp(100,100));//设置字体位置 l->setString("HelloCocos2dx");//设置字体内容 l->setColor(ccc3(255,0));//设置颜色 l->setScale(3.0f);//放大3倍 l->setRotation(45.f);//设置旋转角度 LabelBMFont*f=LabelBMFont::create("test","fonts/bitmapFontTest.fnt") LabelAtlas 2.菜单(MenuItemFont、MenuItemLabel、MenuItemImage、MenuItemSprite、MenuItemToggle) autopBtn=MenuItemFont::create("goback",CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));//函数声明:voidHelloWorld::menuCloseCallback(Ref*pSender) //或者写成autopBtn=MenuItemFont::create("goback",[](Ref*ref){MessageBox("","");}); Menu*pMenu=Menu::create(pBtn,NULL); pMenu->setPosition(CCPointZero); addChild(pMenu); LabelTTF*ttf=LabelTTF::create("Hello",40); //MenuItemLabel*ml=MenuItemLabel::create(ttf,"");}); MenuItemLabel*ml=MenuItemLabel::create(ttf,CC_CALLBACK_1(HelloWorld::noButton,this)); Menu*m=Menu::create(ml,NULL); addChild(m); //autoitem2=MenuItemImage::create("Closenormal.png","CloseSelected.png",this)); autoitem2=MenuItemImage::create("Closenormal.png","");}); Menu*m=Menu::create(item2,NULL); addChild(m); autospritenormal=Sprite::create(s_MenuItem,Rect(0,23*2,115,23)); autospriteSelected=Sprite::create(s_MenuItem,23*1,23)); autospritedisabled=Sprite::create(s_MenuItem,23*0,23)); autoitem1=MenuItemSprite::create(spritenormal,spriteSelected,spritedisabled,this)); autoitem1=MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::noButton,this),MenuItemFont::create("On"),MenuItemFont::create("Off"),NULL); Menu*m=Menu::create(item1,NULL); addChild(m); 3.进度条 4.计时器 【事件处理】 1、输入框 TextFieldTTF*tf=TextFieldTTF::textFieldWithPlaceHolder("input",20); tf->setPosition(visibleSize.width/2,visibleSize.height/2); autolistener=EventListenerTouchOneByOne::create(); listener->onTouchBegan=[tf](Touch*t,Event*e){ if(tf->getBoundingBox().containsPoint(t->getLocation())){ //监听函数 tf->attachWithIME(); }else{ tf->detachWithIME(); } returnfalse; }; Director::getInstance()->getEventdispatcher()->addEventListenerWithSceneGraPHPriority(listener,tf); addChild(tf); 2、场景切换 LabelTTF*label=LabelTTF::create("Shownextscene","Courlier",36); addChlid(label); label->setPosition(viibleSize.width/2,visibleSize.height/2); autolistener=EventListenerTouchOneByOne::create(); listener->onTouchBegan=[label](Touch*t,Event*e){ if(label->getBoundingBox().containsPoint(t->getLocation())){ Director::getInstance()->replaceScene(ImageScene::createScene()); } returnfalse; }; Director::getInstance()->getEventdispatcher()->addEventListenerWi thSceneGraPHPriority(listener,label);