项目创建完毕后。见Class目录。
主要是AppDelegate(应用导演)和HelloWorldScene(示例层)。
AppDelegate 是 Cocos2D-x的内部入口。
从操作系统到Cocos 会先进入 AppDelegate。
也就是当 '引擎' 初始化完毕后,会调用AppDelegate的
ApplicationDidFinishLaunching 方法。
在 AppDelegate 中 执行游戏的初始化,设置分辨率并启动场景。
[AppDelegate.cpp]
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
//初始化OpenGLs视图 如果成功就会根据对应平台完成对象实现。
if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
glview = GLViewImpl::createWithRect("SmartGame", Rect(0, 0, designResolutionSize.width, designResolutionSize.height));
#else
glview = GLViewImpl::create("SmartGame");
#endif
//导演了设置OpenGL
director->setOpenGLView(glview);
}
// turn on display FPS (显示帧率)
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
// 一般肉眼这个刷新频率够了
director->setAnimationInterval(1.0 / 60);
// Set the design resolution
// 设置 屏幕分辨率
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);
Size frameSize = glview->getFrameSize();
//如果OpenGl拿出的高度大于中等大小才会执行的代码块,应该是适屏设置。
if (frameSize.height > mediumResolutionSize.height)
{
director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
}
// if the frame's 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 frame's 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. it's an autorelease object
// 创建HelloWorld场景,这个场景对象会交给Cocosed-x管理,不需要手动释放
auto scene = HelloWorld::createScene();
// 运行这个场景
director->runWithScene(scene);
return true;
}
当导演runWithScene 运行该场景时。
会先进入该场景的ini 初始化方法。
[HelloWorldScene.cpp]
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first ,必须先执行父类的初始化。
if ( !Layer::init() )
{
return false;
}
// 屏幕的可见区域值
Size visibleSize = Director::getInstance()->getVisibleSize();
// 原点的位置
Vec2 origin = Director::getInstance()->getVisibleOrigin();
// 关闭按钮是一个 MenuItemImage (菜单项) 对象。
// create 方法中的前两个参数代表着选中与非选中状态显示的图。
// 当他被单击的时候,CC_CALLBACK_1开始执行回调函数,即helloWorld的menuCloseCallback
// 函数原型
/**
*参数 Ref* 代表单击事件都发送者,即MenuItemImage!
void HelloWorld::menuCloseCallback(Ref* sender){
Director::getInstance()->end();
}
*/
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
origin.y + closeItem->getContentSize().height/2));
// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
// 设置类菜单位置,以后记住这代表右下角。
menu->setPosition(Vec2::ZERO);
// 此行代表加到场景中。
// 第二个参数代表绘制层的顺序,默认参数值为0,
// 表示最高优先层导入,该值越大表示该层在最后加载(在最高一层),一般背景图层是首先加载,
// 其他元素在加载在背景层上面。因为背景在后面加载的话,会覆盖掉前面加载的元素,看不到想要的图层组合效果。
this->addChild(menu, 1);
// 创建文本,选择指定字体库,设置字号
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
// 设置位置, X 剧中 , y 偏上
// 此处标记 Vec2的居中布局位置 : (原点x轴的起始位置向右偏移至总屏幕可见范围一半的位置
// 即 origin.x + visibleSize.width/2
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height));
// add the label as a child to this layer
this->addChild(label, 1);
// add "HelloWorld" splash screen"
// 这里创建里一个精灵,用于显示纹理(就是贴图)。
auto sprite = Sprite::create("HelloWorld.png");
// x y 轴起点偏移至屏幕可见范围的一半,上下左右都居中
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
// add the sprite as a child to this layer
this->addChild(sprite, 0);
return true;
}
本文内容源自:
http://spu.dangdang.com/23947634.html
- 大小: 1.8 MB
分享到:
相关推荐
接下来,把 F:\cocos2d-1.0.1-x-0.9.1\cocos2dx 和 F:\cocos2d-1.0.1-x-0.9.1\CocosDenshion 这两个文件夹里面的全部内容拷贝一份到 D:\cocos2d-xProjects\HelloWorld 中去。 九、设置静态链接库 接下来,打开 F:\...
5. 在解决方案中选择HelloWorld项目作为起点,这是Cocos2d-x提供的一个基础示例,可以快速看到游戏框架运行的效果。 6. 编译并运行HelloWorld项目,观察到基本的游戏框架运行在屏幕上,此时Cocos2d-x的入门学习已...
在“Cocos2d-x HelloWorld代码部分类图及时序图”中,我们将会探讨这个框架的基础构建块,以及如何通过代码来实现一个简单的“HelloWorld”程序。 首先,让我们关注“HelloWorld”类图。在Cocos2d-x中,"HelloWorld...
- **初学者**:可以通过本书快速上手Cocos2d-x的基本操作与开发流程。 - **有一定经验的开发者**:能深入了解Cocos2d-x的高级功能与技巧,比如游戏效率优化、网络通信等。 - **对引擎原理感兴趣者**:可以通过对...
文档通过分析HelloWorld示例,向读者展示了Cocos2d-x框架的程序启动和运行流程,让读者对框架的结构和工作原理有了更深刻的理解。从创建AppDelegate类实例,到调用CCApplication的run方法,这一系列动作背后的逻辑是...
这部分会讲解Cocos2d-x的项目结构,如何搭建开发环境,并引导读者进行第一个Hello World项目的创建,从而对Cocos2d-x有一个基本的认识。 接下来,"Cocos2d-x基础知识学习"部分会详细讲解Cocos2d-x的基本概念,包括...
开发者可能还会了解到如何使用cocos2d-x的内置编辑器Cocos Creator或者第三方工具进行图形界面的设计,以及如何将项目打包发布到不同的目标平台。 压缩包中的代码实例通常会对应书中的各个章节,每个实例都对应一个...
- **Visual Studio集成**:cocos2d-x与Visual Studio有良好的集成,开发者可以通过VS进行项目创建、调试和部署。 - **DirectX支持**:在Windows上,cocos2d-x利用DirectX进行图形渲染,提供高性能的游戏体验。 5....
6. `HelloWorld.png`、`CloseNormal.png`、`CloseSelected.png`:这些是资源文件,通常在cocos2d-x游戏中用于显示图像。`HelloWorld.png`可能是“Hello, World!”的文字或者图标,而`CloseNormal.png`和`...
2.4. **项目转换**:Cocos2d-x项目通常包含一个Hello World示例,以及TestCpp项目,它们都是用来测试引擎功能的。在Eclipse中导入这些项目,可以熟悉Cocos2d-x的构建过程和结构。首先,根据Cocos2d-x的官方文档或...
《cocos2d-x场景切换详解》 在游戏开发或者应用设计中,场景切换是一个至关重要的环节,它决定了用户在不同界面之间的流畅体验。cocos2d-x作为一款广泛使用的2D游戏引擎,其场景管理功能强大且灵活,能够帮助开发者...
接下来,你可以尝试运行cocos2d-x自带的test项目,同样设置为启动项目,查看cocos2d-x提供的各种功能和效果。 为了方便创建新的cocos2d-x项目,文章中还介绍了安装Visual Studio模板的步骤。在解压后的文件夹中找到...
4. **Hello World示例**:通过创建简单的 Hello World 游戏,让开发者熟悉 Cocos2d-x 的基本用法。 ### 高级功能讲解 1. **精灵与动画**:解释如何在 Cocos2d-x 中添加精灵(Sprite)以及实现动画效果。 2. **场景...
cocos2d-x进阶教程1_2编写自己的Lua版本的HelloWorld.mp4 cocos2d-x进阶教程1_3Lua语言的注释、变量、语句块.mp4 cocos2d-x进阶教程1_4Lua中函数、条件判断语句.mp4 cocos2d-x进阶教程1_5Lua中循环语句和逻辑运算...
- **HelloWorld测试项目**:使用Windows版的HelloWorld示例,通过Visual Studio打开cocos2d-win32.vc2008.sln解决方案文件,并将HelloWorld项目设置为启动项目。按照生成->调试->启动新实例的顺序来运行HelloWorld...
6. **开始使用cocos2d-x**:在Visual Studio中打开`sln`文件,选择HelloWorld项目作为启动项,进行编译并运行。若无错误,将显示cocos2d-x的欢迎界面。同样,你也可以将测试项目设为启动项,查看各种cocos2d-x的功能...
### Cocos2d-x高级开发教程知识点概览 #### 一、Cocos2d-x引擎概述 - **定义与特点**:Cocos2d-x是一款专为2D游戏设计的跨平台游戏引擎,其设计灵感来源于Cocos2d-iPhone。它具有简单易用、性能高效、灵活性强等...
Cocos2d-iphone之HelloWorld
HelloWorld是Cocos2d-x项目中的一个示例应用,用于新手入门。它展示了如何创建一个简单的“Hello, World!”程序,包括初始化引擎、加载场景、添加精灵和调度器等基本操作,帮助开发者理解框架的基本工作流程。 2. ...