cocos2dx常用功能-Cocos2dx开发常用控件详解(共11部分)
发布时间:2020-12-14 19:41:34 所属栏目:百科 来源:网络整理
导读:Cocos2dx游戏开发 第三阶段:常用功能1 1---Cocos2dx常用功能-Cocos2dx开发常用控件详解 //是否显示左下角的帧频数据 director-setDisplayStats( true ); // set FPS. the default value is 1.0/60 if you don't call this //显示每一帧的时间间隔 director-
Cocos2dx游戏开发 第三阶段:常用功能1
1---Cocos2dx常用功能-Cocos2dx开发常用控件详解
//是否显示左下角的帧频数据
director->setDisplayStats(
true
);
// set FPS. the default value is 1.0/60 if you don't call this
//显示每一帧的时间间隔
director->setAnimationInterval(1.0 / 10);
2.Cocos2d-x 之Sprite 视频很重点
Sprite
*s =
Sprite
::
create
(
"img.jpg"
);
s-> setAnchorPoint ( Point ( 0 , 0 )); s-> setPosition ( 100 ,216)">200 ));
addChild(s);
3.Cocos2d-x之Director、Scene、Layer
Scene
*scene =
Scene
::
create
();
Layer *layer = Layer :: create (); scene-> addChild (layer); "HelloWorld.png" ); s-> 0 ));
layer->addChild(s);
4.Cocos2d-x之Log
跨平台日志输出API
log(
"Hello Cocos2dx %d"
,216)">200
);
5.Cocos2d-x之MessageBox
MessageBox
(
"
消息内容
"
,
消息标题
"
);
attach
/?'t?t?/
附加;附属 detach
/d?'t?t?/
vt. 分离;派遣
6.Cocos2d-x之LabelTTF:
Size
size =
Director
::
getInstance
()->
getVisibleSize
();
LabelTTF *label = LabelTTF :: create (); label-> setString ( "Hello jikexueyuan" ); label-> setFontSize ( 36 ); label-> setPosition (size. width / 2 ,size. height / 2 );
addChild(label);
7.Cocos2d-x之TextFieldTTF
Size
visibleSize =
getVisibleSize
();
TextFieldTTF *tf = TextFieldTTF :: textFieldWithPlaceHolder ( 在这里输入 宋体 20 ); tf-> setPosition (visibleSize. 2 ); addChild (tf); auto listener = EventListenerTouchOneByOne :: create (); listener-> onTouchBegan = [tf]( Touch *t, Event *event){ if (tf-> getBoundingBox (). containsPoint (t-> getLocation ())) { tf-> attachWithIME (); } else { tf-> detachWithIME (); } return false ; };
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,tf);
8.Cocos2d-x之创建自定义类
Ball.h中
#include
<iostream>
#include "cocos2d.h" using namespace cocos2d; class Ball: public Sprite { public : virtual bool init(); CREATE_FUNC(Ball); // static Ball* create(){ // // Ball * b = new Ball(); // b->init(); // b->autorelease(); // return b; // }
};
Ball.cpp中
"Ball.h"
bool
Ball::init(){
initWithFile(
"ball.png"
);
true
;
}
HelloWorldScene.cpp
中:
auto
b = Ball::create()
;
b->setPosition(200,200);
addChild(b);
9.Cocos2d-x之内存管理机制
Object *obj = new Object();
obj->autorelease();
log("count:%d",obj->getReferenceCount());
永远不要使用delete
obj
10.Cocos2d-x之Menu
闭包是C++11的特性
auto
menu = Menu::create(MenuItemImage::create(
"normal.png"
,27)">"selected.png"
,[](Object* obj){
log("menu item touched”);//松开手后执行
}),
NULL
);
addChild(menu);
11.Cocos2d-x之TableView
有一个列表项它曾经呈现出来了,在往上面拖动的时候 处于不呈现的状态(拖出去界面)这个列表项会被回收
放到TableView的一个队列里面,如果有新的列表项需要呈现出来,会先从回收的队列里面去查找有没有已经回收过的,有回收过得会直接使用,没有回收过得需要重新创建
HelloWorldScene.h:
"cocos2d.h"
<cocos-ext.h>
USING_NS_CC_EXT; USING_NS_CC; class HelloWorld : public cocos2d::Layer,TableViewDataSource,TableViewDelegate { public : // there's no 'id' in cpp,so we recommend returning the class instance pointer static cocos2d::Scene* createScene(); // Here's a difference. Method 'init' in cocos2d-x returns bool,instead of returning 'id' in cocos2d-iphone bool init(); // a selector callback void menuCloseCallback(Object* pSender); // implement the "static create()" method manually CREATE_FUNC(HelloWorld); /** * cell height for a given table. * * @param table table to hold the instances of Class * @return cell size */ virtual Size cellSizeForTable(TableView *table); /** * a cell instance at a given index * * idx index to search for a cell * cell found at idx */ virtual TableViewCell* tableCellAtIndex(TableView *table,ssize_t idx); /** * Returns number of cells in a given table view. * * number of cells */ virtual ssize_t numberOfCellsInTableView(TableView *table); public : /** * Delegate to respond touch event * * table table contains the given cell * cell cell that is touched * @js NA * @lua NA */ void tableCellTouched(TableView* table,TableViewCell* cell); /** * @js NA * @lua NA */ void scrollViewDidScroll(ScrollView* view){}; void scrollViewDidZoom(ScrollView* view){}; };
#endif
// __HELLOWORLD_SCENE_H__
HelloWorldScene.cpp:
"HelloWorldScene.h"
USING_NS_CC; Scene* HelloWorld::createScene() { // 'scene' is an autorelease object auto scene = Scene::create(); // 'layer' is an autorelease object auto layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; } // on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { false ; } TableView * tv = TableView::create( this ,Size( 300 ,216)">300 )); tv->setAnchorPoint(Point( 0 )); tv->setPosition( 0 ); tv->setDelegate( this ); addChild(tv); true ; } Size HelloWorld::cellSizeForTable(cocos2d::extension::TableView *table){ return Size( 50 ); } TableViewCell* HelloWorld::tableCellAtIndex(cocos2d::extension::TableView *table,ssize_t idx){ TableViewCell *cell = table->dequeueCell(); LabelTTF *label; if (cell== NULL ) { cell = TableViewCell::create(); label = LabelTTF::create(); label->setTag( 2 ); label->setFontSize( 30 ); label->setAnchorPoint(Point( 0 )); cell->addChild(label); } else { label = (LabelTTF*)cell->getChildByTag( 2 ); } label->setString(StringUtils::format( "Label %ld" ,idx)); return cell; } ssize_t HelloWorld::numberOfCellsInTableView(cocos2d::extension::TableView *table){ return 100 ; } void HelloWorld::tableCellTouched(cocos2d::extension::TableView *table,cocos2d::extension::TableViewCell *cell){ LabelTTF *label = (LabelTTF*)cell->getChildByTag( 2 ); log( "%s" ,label->getString().c_str()); } void HelloWorld::menuCloseCallback(Object* pSender) { Director::getInstance()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit( 0 ); #endif
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |