Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx常用功能-Cocos2dx开发常用控件详解(共11部分)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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 @H_531_197@/ə'tætʃ/ @H_197_199@附加;附属 detach @H_531_197@/dɪ'tætʃ/ vt. 分离;派遣
6.Cocos2d-x之LabelTTF:
Size size = Director :: geTinstance ()-> getVisibleSize ();
LabelTTF *label = LabelTTF :: create ();
label->
set@R_197_10495@ng ( "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. :14px; font-family:Menlo; color:rgb(79,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> @H_905_450@
#include "cocos2d.h" @H_905_450@

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 @H_157_12@menu = Menu::create(MenuItemImage::create( "normal.png" ,27)">"SELEcted.png" ,[](Object* obj){
log("menu item touched@H_874_671@”);//松开手后执行
}), NULL );
addChild(menu);

11.Cocos2d-x之TableView
有一个列表项它曾经呈现出来了,在往上面拖动的时候 处于不呈现的状态(拖出去界面)这个列表项会被回收
放到TableView的一个队列里面,如果有新的列表项需要呈现出来,会先从回收的队列里面去查找有没有已经回收过的,有回收过得会直接使用,没有回收过得需要重新创建

HelloWorldScene.h:
"cocos2d.h"
<cocos-ext.h> @H_905_450@

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 @H_157_12@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){};
};

@H_905_450@#endif // __HelLOWORLD_SCENE_H__


HelloWorldScene.cpp:
"HelloWorldScene.h" @H_905_450@

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->set@R_197_10495@ng(@R_197_10495@ngUtils::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->get@R_197_10495@ng().c_str());

}


void HelloWorld::menuCloseCallBACk(Object* pSender)
{
Director::geTinstance()->end();

@H_905_450@#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit( 0 );
@H_905_450@#endif
}

大佬总结

以上是大佬教程为你收集整理的cocos2dx常用功能-Cocos2dx开发常用控件详解(共11部分)全部内容,希望文章能够帮你解决cocos2dx常用功能-Cocos2dx开发常用控件详解(共11部分)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。