企业网站后台模板,网页设计1000字心得,网站公司怎么找客户,培训机构网站如何建设新建一个工程#xff0c;相信感兴趣的同学都想知道cocos引擎都是如何运行的 想知道是如何运行的#xff0c;看懂四个文件即可 话不多说#xff0c;上代码#xff1a; 1、首先解释 AppDelegate.h 1 #ifndef _APP_DELEGATE_H_2 #define _APP_DELEGATE_H_3 4 #include 相信感兴趣的同学都想知道cocos引擎都是如何运行的 想知道是如何运行的看懂四个文件即可 话不多说上代码 1、首先解释 AppDelegate.h 1 #ifndef _APP_DELEGATE_H_2 #define _APP_DELEGATE_H_3 4 #include cocos2d.h5 6 /**7 brief The cocos2d Application.8 9 Private inheritance here hides part of interface from Director.
10 */ //从这里可以看到AppDelegate继承了cocos2d::Application 而cocos2d::Application是cocos2d-x引擎提供的基类
11 class AppDelegate : private cocos2d::Application
12 {
13 public:
14 AppDelegate();
15 virtual ~AppDelegate();
16 /*
17
18 */
19 virtual void initGLContextAttrs();
20
21 /**
22 brief Implement Director and Scene init code here.
23 return true Initialize success, app continue.
24 return false Initialize failed, app terminate.
25 *游戏启动时调用的函数在这里可以初始化导演对象和场景对象
26 */
27 virtual bool applicationDidFinishLaunching();
28
29 /**
30 brief Called when the application moves to the background
31 param the pointer of the application
32 *游戏进入后台时调用的函数
33 */
34 virtual void applicationDidEnterBackground();
35
36 /**
37 brief Called when the application reenters the foreground
38 param the pointer of the application
39 *游戏进入前台时调用的函数
40 */
41 virtual void applicationWillEnterForeground();
42 };
43
44 #endif // _APP_DELEGATE_H_ 2、AppDelegate.cpp #include AppDelegate.h
#include HelloWorldScene.hUSING_NS_CC;//这个是cocos2dx提供的一个宏它是用来替换 using namespace cocos2d语句的。static cocos2d::Size designResolutionSize cocos2d::Size(480, 320);
static cocos2d::Size smallResolutionSize cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize cocos2d::Size(2048, 1536);AppDelegate::AppDelegate()
{
}AppDelegate::~AppDelegate()
{
}// if you want a different context, modify the value of glContextAttrs
// it will affect all platforms
void AppDelegate::initGLContextAttrs()
{// set OpenGL context attributes: red,green,blue,alpha,depth,stencilGLContextAttrs glContextAttrs {8, 8, 8, 8, 24, 8};GLView::setGLContextAttrs(glContextAttrs);
}// if you want to use the package manager to install more packages,
// dont modify or remove this function
static int register_all_packages()
{return 0; //flag for packages manager
}// 游戏启动时调用的函数
bool AppDelegate::applicationDidFinishLaunching() {// initialize directorauto director Director::getInstance();//初始化导演类auto glview director-getOpenGLView();if(!glview) {
#if (CC_TARGET_PLATFORM CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM CC_PLATFORM_LINUX)glview GLViewImpl::createWithRect(NotesDamo, cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height));
#elseglview GLViewImpl::create(NotesDamo);
#endifdirector-setOpenGLView(glview);//设置导演类的OpenGL视图}// turn on display FPSdirector-setDisplayStats(true);//设置是否在屏幕上显示帧率信息(一般都是为了测试实际发布时是不会显示的)// set FPS. the default value is 1.0/60 if you dont call thisdirector-setAnimationInterval(1.0f / 60);//一秒执行60帧// Set the design resolutionglview-setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);auto frameSize glview-getFrameSize();// if the frames height is larger than the height of medium size.if (frameSize.height mediumResolutionSize.height){ director-setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));}// if the frames height is larger than the height of small size.else if (frameSize.height smallResolutionSize.height){ director-setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));}// if the frames height is smaller than the height of medium size.else{ director-setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));}register_all_packages();// create a scene. its an autorelease objectauto scene HelloWorld::createScene();//创建导演类对象scene// rundirector-runWithScene(scene);//运行该场景(会使游戏进入该场景)return true;
}// This function will be called when the app is inactive. Note, when receiving a phone call it is invoked.//游戏进入后台时调用的函数
void AppDelegate::applicationDidEnterBackground() {Director::getInstance()-stopAnimation();//停止场景中的动画// if you use SimpleAudioEngine, it must be paused// 停止背景音乐默认时注释掉的// SimpleAudioEngine::getInstance()-pauseBackgroundMusic();
}// this function will be called when the app is active again
// 游戏进入前台时调用的函数
void AppDelegate::applicationWillEnterForeground() {Director::getInstance()-startAnimation();//开始场景中的动画// if you use SimpleAudioEngine, it must resume here// 继续背景音乐的默认是注释掉的// SimpleAudioEngine::getInstance()-resumeBackgroundMusic();
} 3、HelloWorldScene.h 1 #ifndef __HELLOWORLD_SCENE_H__2 #define __HELLOWORLD_SCENE_H__3 4 #include cocos2d.h5 6 7 /*8 *在这里我们可以看出HelloWorld类继承了cocos2d::Layer类它被称为层(layer)这些层被放到了场景(scene)中场景类是cocos2d::Scene9 注意HelloWorld.h虽然命名为场景但是它内部定义的HelloWorld类是一个层
10 */
11 //HelloWorld继承了cocos2d::LayerHelloWorld是一个层而不是场景。
12 class HelloWorld : public cocos2d::Layer
13 {
14
15 public:
16
17 static cocos2d::Menu* m_pSelectedItem();
18
19 virtual ~HelloWorld(){}
20
21 static cocos2d::Scene* createScene();//声明创建当前的层HelloWorld所在场景的静态函数createScene()
22
23 virtual bool init();//声明初始化层HelloWorld实例函数。
24
25 // a selector callback
26 void menuCloseCallback(cocos2d::Ref* pSender);//声明菜单回调函数menuCloseCallback用于触摸菜单事件的回调。
27
28 CREATE_FUNC(HelloWorld);//CREATE_FUNC是cocos2d-x中定义的一个宏(作用是创建一个静态函数static create()该函数可以用来创建层)
29
30
31
32 // implement the static create() method manually
33
34 };
35
36 #endif // __HELLOWORLD_SCENE_H__ 4、HelloWorldScene.cpp 1 #include HelloWorldScene.h2 #include SimpleAudioEngine.h3 4 USING_NS_CC;5 /*6 说明createScene()函数式是在游戏应用启动的时候在AppDelegate中的bool AppDelegate::applicationDidFinishLaunching()函数中通过 auto scene HelloWorld::createScene()语句调用的。7 createScene()中做了三件事情首先创建了HelloWorld层所在的场景对象其次创建了HelloWorld层最后将HelloWorld层添加到场景scene中8 */9 Scene* HelloWorld::createScene()10 {11 // scene is an autorelease object12 auto scene Scene::create();13 14 // layer is an autorelease object15 // 当调用到这句创建层的时候会调用HelloWorld的实例函数init()达到初始化HelloWorld层的目的。16 auto layer HelloWorld::create();17 18 // add layer as a child to scene19 scene-addChild(layer);20 21 // return the scene22 return scene;23 }24 25 // on init you need to initialize your instance26 bool HelloWorld::init()27 {28 //29 // 1. super init first30 // 初始化父类31 if ( !Layer::init() )32 {33 return false;34 }35 36 auto visibleSize Director::getInstance()-getVisibleSize();37 Vec2 origin Director::getInstance()-getVisibleOrigin();38 39 /////40 // 2. add a menu item with X image, which is clicked to quit the program41 // you may modify it.42 43 // add a close icon to exit the progress. its an autorelease object44 // 增加一个菜单项单机的时候退出程序45 auto closeItem MenuItemImage::create(46 CloseNormal.png,47 CloseSelected.png,48 CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));49 50 closeItem-setPosition(Vec2(origin.x visibleSize.width - closeItem-getContentSize().width/2 ,51 origin.y closeItem-getContentSize().height/2));52 53 // create menu, its an autorelease object54 auto menu Menu::create(closeItem, NULL);55 menu-setPosition(Vec2::ZERO);//自定义菜单对象的位置56 this-addChild(menu, 1);//把菜单对象添加到当前HelloWorld层上57 58 /////59 // 3. add your codes below...60 61 // add a label shows Hello World62 // create and initialize a label63 64 //添加label标签标题65 auto label Label::createWithTTF(Hello World, fonts/Marker Felt.ttf, 24);66 67 // position the label on the center of the screen68 label-setPosition(Vec2(origin.x visibleSize.width/2,69 origin.y visibleSize.height - label-getContentSize().height));70 71 // add the label as a child to this layer72 this-addChild(label, 1);73 74 // add HelloWorld splash screen75 //添加精灵也就是cocos2d-x的logo定义到屏幕中央76 auto sprite Sprite::create(HelloWorld.png);77 78 // position the sprite on the center of the screen79 sprite-setPosition(Vec2(visibleSize.width/2 origin.x, visibleSize.height/2 origin.y));80 81 // add the sprite as a child to this layer82 this-addChild(sprite, 0);83 84 85 return true;86 }87 88 // 菜单回调函数(返回主界面)89 void HelloWorld::menuCloseCallback(Ref* pSender)90 {91 //Close the cocos2d-x game scene and quit the application92 Director::getInstance()-end();93 94 #if (CC_TARGET_PLATFORM CC_PLATFORM_IOS)//IOS表示iOS平台95 exit(0);96 #endif97 98 /*To navigate back to native iOS screen(if present) without quitting the application ,do not use Director::getInstance()-end() and exit(0) as given above,instead trigger a custom event created in RootViewController.mm as below*/99
100 //EventCustom customEndEvent(game_scene_close_event);
101 //_eventDispatcher-dispatchEvent(customEndEvent);
102
103
104
105
106 // PhysicsShape物理引擎类精灵(也属于精灵)
107
108
109 // 节点
110 //(1)创建节点
111 Node * chilNode Node::create();
112 //(2)查找子节点
113 Node *node node -getChildByTag(123);
114 //(3)增加新的子节点
115 node-addChild(chilNode,0,123);
116 //(4)删除子节点并停止该节点上的一切动作
117 node-removeChildByTag(123,true);
118 //(5)通过NOde指针删除节点
119 node -removeChild(node);
120 //(6)删除所有子节点并停止这些节点上的一切动作
121 node -removeAllChildrenWithCleanup(true);
122 //(7)从父节点中删除 node 节点并停止该节点上的一切动作。
123 node-removeFromParentAndCleanup(true);
124 /*Node重要属性*/
125 // setPosition; 坐标
126 // setAnchorPoint(Vce2(0.5,.05)); 锚点
127
128
129
130
131 //坐标
132 // Vec2 touchLocation touch -getLocationInView();
133 // Vec2 touchLocation2 Director::getInstance()-convertToGL(touchLocation);
134
135
136 }
137
138
139 /**
140 cocos2d-x的事件响应机制即菜单层最先接收到系统事件则排在后面的是精灵层最后是背景层在事件的传递过程中 如果有一个层处理了该事件则排在后面的层将不再接受到该事件。
141 */