cocos2dx适配模式

合集下载

JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案

JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案

主要介绍:JavaScript强化教程—— Cocos2d-JS的屏幕适配方案1. 设置屏幕适配策略(Resolution Policy)如果你还没有用过Resolution Policy,只需要在游戏载入过程完成之后(cc.game.onStart函数回调中),调用下面的代码:cc.view.setDesignResolutionSize(320, 480, cc.ResolutionPolicy.SHO W_ALL);setDesignResolutionSize函数的前两个参数是你想要在你的代码中使用的游戏分辨率,第三个参数就是你选择的适配方案。

引擎中内置了5种适配方案,每种都有自己独特的行为,详见下文。

如果你已经设置了设计分辨率,那么你可以直接设置你的Resolution Policy:cc.view.setResolutionPolicy(cc.ResolutionPolicy.NO_BORDER);原生游戏中游戏总是使用全部屏幕空间,但是在WEB端你的网页中也许除了游戏还有别的视觉或文字元素,或者也许你需要给你的游戏设计一个漂亮的边框。

所以Cocos2d-JS中Web引擎的适配方案会默认适配游戏Canvas元素的父节点,如果你希望游戏场景适配浏览器屏幕,那么只需要将Canvas直接放置到body下就可以了:<body><canvas id="gameCanvas"></canvas></body>2. Resolution Policy的意义使用Resolution Policy的好处很明显,不论设备屏幕大小如何,也不论浏览器窗口的宽高比,你的游戏场景都会被自动放缩到屏幕大小。

更重要的是,在游戏代码中,你将永远使用你所设计的游戏分辨率来布置游戏场景。

比如说,如果你将设计分辨率设置为320 * 480,那么在游戏代码中你的游戏窗口右上角坐标将永远是(320, 480)(在FIXED_WIDTH模式高度可能会被缩放,同样在FIXED_HEIGHT模式下宽度可能存在缩放的情况,具体看下文说明)。

cocos2dx屏幕适配方案

cocos2dx屏幕适配方案

cocos2dx屏幕适配⽅案我们在利⽤cocos2dx来开发游戏时,在开始时就不可避免的会遇到屏幕适配问题,来使我们的游戏适应移动终端的各种分辨率⼤⼩。

⽬前,⼤家采⽤的屏幕适配⽅案不⼀,⽹上的资料也⽐较丰富,下⾯我也将⾃⼰使⽤的⽅案做下记录。

由于我的Mac系统下只有⼀个分辨率的虚拟机,所以这次使⽤的是VS2010,使⽤的是cocos2dx2.2.2版本。

我这⾥采⽤的⽅案是为不同分辨率的屏幕设置不同资源⽬录的⽅案,根据我们的需求需要准备多套资源,但是由于部分分辨率较为接近,所以也不必为所有分辨率都去单独准备资源,可以⼏种分辨率公⽤同⼀套图⽚。

⾸先,我们知道cocos2dx默认的资源⽬录是Resources⽬录,图⽚和声⾳⽂件都放在该⽬录下。

现在,我们在Resources⽬录下创建两个⽂件夹“240X320”和“320X480”,⽬录下分别放⼊两张同名图⽚,这样我们的素材就准备好了。

然后,我们就可以在项⽬中使⽤不同⽬录下的素材了。

我们在“AppDelegate.cpp”中添加屏幕适配的⽅法,代码如下:1//屏幕适配策略2void AppDelegate::ScreenAdaptive()3 {4 CCSize szFrame = CCEGLView::sharedOpenGLView()->getFrameSize(); //屏幕真实分辨率⼤⼩5float whProportion = szFrame.width/szFrame.height; //屏幕宽⾼⽐67const int DIRCOUNT = 2; //资源⽬录数量8float diff[DIRCOUNT] = {fabs(whProportion-(240.0/320)), fabs(whProportion-(320.0/480))}; //各⽬录与屏幕宽⾼⽐之差910int selectIndex = 0; //选择索引号11float minVal = diff[0]; //最⼩误差1213//遍历数组,查找与屏幕宽⾼⽐最接近的资源⽬录14for (int i = 1; i < DIRCOUNT; i++)15 {16if (diff[i] < minVal)17 {18 minVal = diff[i];19 selectIndex = i;20 }21 }2223//设置最佳资源⽬录24switch(selectIndex)25 {26case0:27 {28 std::vector<std::string> searchPaths;29 searchPaths.push_back("240X320");30 CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths); //设置资源⽬录31 CCEGLView::sharedOpenGLView()->setDesignResolutionSize(240,320, kResolutionExactFit); //设置设计区域⼤⼩及适配⽅式,此处采⽤“完全适应”⽅式32break;33 }34case1:35 {36 std::vector<std::string> searchPaths;37 searchPaths.push_back("320X480");38 CCFileUtils::sharedFileUtils()->setSearchPaths(searchPaths);39 CCEGLView::sharedOpenGLView()->setDesignResolutionSize(320,480, kResolutionExactFit);40break;41 }42default:43 {44break;45 }46 }47 }该⽅法的主要思路是,从我们准备的分辨率资源⽬录中查找到与实际屏幕分辨率的宽⾼⽐最为接近的⼀个⽬录,然后将该⽬录添加到项⽬的资源⽬录容器中。

cocos2d-x_Win32_Android_环境配置手册

cocos2d-x_Win32_Android_环境配置手册

COCOS2D-X配置手册(Win32、Android)编制:刘勤熙李育完成日期:2012-1-19目录1. 引言 (3)2. cocos2d-x Win32环境配置 (3)2.1 win32开发环境配置 (3)2.1.1 Visual Studio 2008 (3)2.1.2 cocos2d-x (3)2.1.3 (可选)Visual Assist X (3)2.1.4 (可选)doxygen (4)2.2 Win32 可执行文件生成过程 (5)2.3 常见问题总汇 (7)3 cocos2d-x Android 环境配置 (8)3.1 android开发环境配置 (8)3.1.1 Eclipse 3.7.1 (8)3.1.2 Eclipse ADT插件 (8)3.1.3 Eclipse CDT插件 (10)3.1.4 AndroidSDK (12)3.1.5 AndroidNDK (13)3.1.6 Cygwin (13)3.2 Android可执行文件生成过程 (15)3.2.1 前期准备 (15)3.2.2 生成Android空工程 (15)3.2.3 交叉编译so文件 (15)3.2.4 生成android系统可用的apk文件 (16)3.3 常见问题汇总 (18)4其它 (18)1.引言略……一切需要的软件及插件版本号以笔者使用为准,其它版本号的软件及插件不保证有效。

文件下载地址在2012-1-19确认有效,不保证因各种原因导致下载地址失效。

开发平台操作系统为win32(WindowsXP、WindowsVista、Windows7)2.cocos2d-x Win32环境配置2.1 win32开发环境配置2.1.1 Visual Studio 2008安装VisualStudio2008,默认安装即可,如果是自定义安装,VisualC++组件应选中。

2.1.2 cocos2d-x1. 下载cocos2d-x引擎最新版官方下载地址为:/p/cocos2d-x/downloads/list(当前使用版本为cocos2d-1.0.1-x-0.10.0.zip)2.将cocos2d-1.0.1-x-0.10.0.zip解压缩至硬盘任意目录(建议D:\Work7\cocos2d-1.0.1-x-0.10.0\, 因为现在wophone的开发环境必须安装至此, 以下以此为例)3. 如果想查看引擎源代码,可以在.\cocos2dx\proj.win32目录下找到代码配置文件。

coco2d-x面试题(无脑码农)

coco2d-x面试题(无脑码农)

Cocos2d-x面试题(无脑码农)1,阐述cocos2d-x 中CCScene CCLayer CCSprite CCNodeCCScene:CCScene是app工作流程上独立块,一个app可能拥有多个scene,但是在任何时候只能有一个是激活状态的。

一个CCScene对象由一个或多个CCLayer组成,layer之间是前后相连的。

Layer提供了scene的外观和行为。

通常的用法是直接用一个或多个layer实例化一个scene CCScene的子类CCTrasitionScene实现移动transitions,提供两个scene之间的转移效果,由于scene是CCNode的子类,所以scene可以手工或者用aciton来转变坐标。

所有层和精灵都是他的(子节点)children。

CCScene的4个基本方法:runWithScene(运行画面),replaceScene(替换场景例如从主菜单进入游戏界面),《pushScene(暂停界面),popScene(从暂停的界面还原到游戏界面)Layers:CCLayer同样是CCNode的子类,通常用addChild方法添加子节点。

CCLayer对象定义了可描绘的区域,定义了描绘的规则。

CCLayer可以实现半透明的效果,层的事件相应机制: 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号Spritescocos2d的sprite对象就是一个可以移动、选择、伸缩、动画的2d图形,CCSprite 对象的子成员中可以包含其它的CCSprite 对象。

当CCSprite 对象转换坐标系的时候,它所包含的CCSprite 对象也会转换转换坐标系。

sprites 是CCNode 的子类, 所以他们也可以使用actions来转换坐标. See Actions for more detail about actions.CCNode是场景、层、菜单、精灵等所有节点的父类,它是一个抽象类,没有可视化表示形式,定义了所有node共有的属性和方法。

我的cocos2D-x3.10安装之路

我的cocos2D-x3.10安装之路

WIN10系统安装VS2015+Cocos-X3.10方法经过长时间的摸索与尝试Cocos2D-X3.10 终于可以在Windows10上运行了。

Cocos2D-X3.10的安装和配置个人觉得还是比较麻烦的,主要在于它不像其他软件一键安装就能使用,而在于安装Cocos的同时还要附加其他安装软件和组件,例如Python、JDK、NDK、ANT等,而这些组件又有不同的版本,版本的选择如果不正确就会导致Cocos 无法运行或无法打包生成APK。

目前,Cocos2D-x 支持Win32、Android、iOS 三个平台的开发,本文分别介绍在windows和Android环境下的开发环境搭建。

一个完整的开发环境包括开发、编译、链接、运行和调试等几部分,所以需要相应的开发环境,比如Win32 环境下的VS(Visual Studio,微软公司集成开发环境),Android 的开发环境Eclipse 和Android SDK 等,iOS 则需要Xcode环境,然后使用Cocos2D-x 的模板编译出相应环境的软件包。

一般情况下,使用Cocos2D-x 的开发流程是:首先在VS 环境中进行开发调试,之后分别在另外两个平台的开发环境中编译生成相应的软件包。

当然,如果是首先使用Cocos2DiPhone进行开发,并使用Cocos2D-x 进行Android 版本移植的,一般先在Xcode 环境中进行开发,然后使用Android 的开发环境进行开发。

下面我们就开始搭建跨平台的开发环境。

1.安装VS2015下载地址:链接:/s/1eS363Km 密码:eqdh搭建Windows 下的Cocos2D-x 开发环境,首先需要安装VS,它可以用来创建Windows 平台下的Windows 应用程序、网络应用以及网络服务等,支持的语言包括C++、Basic、C# 等。

双击安装文件,便可以开始安装,默认安装即可。

如果是自定义安装,应选中Visual C++ 组件。

cocos2d-x在WIN7+VS2010环境下配置

cocos2d-x在WIN7+VS2010环境下配置

Cocos2d-x win7 + vs2010 配置图文详解(亲测)1.下载最新版的cocos2d-x。

打开浏览器,输入,然后选择Download,本教程写作时最新版本为cocos2d-1.01-x-0.9.1,具体下载位置如下图:2.下载完之后,解压到当前文件夹。

我把下载的程序放在F盘根目录,解压完毕之后,双击打开文件夹,看看里面有什么东西,红圈部分就是我们要安装使用的文件:3.接下来,我们正式安装cocos2d-x到win7中去。

首先,双击上图中的cocos2d-win32.vc2010.sln(如果你使用的是vs2008,那么只双击cocos2d-win32.vc2008.sln),然后右键点解决方案,再点生成解决方案。

这个过程大约有10分钟,因个人电脑速度而异。

4.生成解决方案完成之后,如果没有错误的话,你应该会得到如下图所示:(如果有错误,请截图告诉我)5.这时你已经成功一大半了,接下来,你可以运行一下cocos2d-x,看看效果。

右建点击解决方案管理中的HelloWorld项目,然后设置为启动项目,如下图所示:然后从上面的菜单中选择“调试”—“开始执行(不调试)”,如下图:如果运气够好,你会得到如下输出:(哈哈,经典的cocos2d头像,庆祝一下吧!)接下来,我们来运行一下cocos2d-x自带的test,看看cocos2d-x给我们带来了哪些效果吧!同样的,右键点解决方案管理中的test,然后设置为启动项目,再点“调试”—“天始执行(不调试)”,接着你会看到下面的输出:然后你就可以尽情地点击里面的各种测试效果啦,还可以按住鼠标不放往下拖动,还有更多好玩的东西。

6.接下来,我将教大家如何安装vc模板。

首先,找开解压之后文件夹里的template文件夹,如下图红色圈所示:双击打开,路径是这样的:template, F:\cocos2d-1.0.1-x-0.9.1\template\msvc,打开之后如下图所示:我们要使用的就是InstallWizardForVS2010.js文件,双击安装即可,如果你是使用其它版本,就相应地双击其它版本的js文件。

cocos2d-x教程

cocos2d-x教程

目录COCOS2d-X教程 (1)第一章环境 (1)(一)vs环境搭建 (1)(二):如何添加新项目 (2)第二章cocos2d-x的特性 (5)第三章制基本图元 (7)(一)、基本图形绘制 (7)第三部分:绘制图片 (11)第七章在cocos2d-x中使用RTTI (21)第八章动作 (22)第一部分:动作概述 (22)第三部分:CCCallFunc家族(回调函数包装器) (23)COCOS2d-X教程第一章环境(一)vs环境搭建1.安装visual studio2008据说vs2008是cocos2d-x运行最稳定的版本。

官方下载地址:/downloads/info.aspx?na=41&SrcFamilyId=83C3A1EC-ED72-4A79-896 1-25635DB0192B&SrcDisplayLang=zh-cn&u=http%3a%2f%%2fdownlo ad%2fe%2f7%2f7%2fe777851c-c1a4-4979-86b3-6886953b32e9%2fVS2008ProEdition90DayTrialC HSX1435983.isovisual assist x自备,vs序列号自备。

2.安装cocos2d-x引擎/wiki_extensions/forward_wiki_page/cocos2d-x?menu_id=1从网站上下载cocos2d-x,并解压到自定义的路径下3.测试helloworld我们使用windows版的helloworld,打开cocos2d-x引擎安装目录下的cocos2d-win32.vc2008.sln将helloworld设为启动项目| 生成->调试->启动新实例,如图所示:(二):如何添加新项目1 安装应用程序向导运行 install-templates-msvc.bat,cocos2d-x 应用程序向导就会自动安装到VS环境下2 建立新项目右键单击解决方案->添加->新项目->cocos2d-x-win32 application注意:目录层级关系,缺省情况下,应该设置在cocos2d-x引擎安装的目录下,否则在编译链接时可能会找不到文件然后,按照之前的步骤编译运行即可,运行效果同上一部分的图第二章cocos2d-x的特性由于cocos2d-x是cocos2d-iphone的c++移植版本。

cocos2d-x引擎介绍PPT课件

cocos2d-x引擎介绍PPT课件
cocos2d-x引擎介绍
cocos2d-x是一款流行的开源游戏引擎,它基于C语言编写,支持跨平台开发,包括iOS 、Android、Windows、Mac等平台。cocos2d-x提供了丰富的游戏开发工具和功能, 包括场景管理、粒子系统、物理引擎等。
游戏框架
游戏框架定义
游戏框架是一个为游戏开发者提供的软件开发框架,它提供了一套完整的游戏开发解决方案,包括游戏逻辑、图形渲 染、物理模拟等。
02 游戏开发中的核心概念
游戏引擎
游戏引擎定义
游戏引擎是一个为游戏开发者提供的一套软件开发工具包,用于构建游戏。它集成了游戏 开发所需的各种核心功能,包括图形渲染、物理模拟、音频处理等。
游戏引擎的重要性
游戏引擎是游戏开发的核心,它简化了游戏开发的过程,提高了开发效率,使开发者能够 专注于游戏的创意和玩法设计。
虚拟现实与增强现实
随着VR和AR技术的不断发展, 未来的游戏将更加沉浸式和交 互式。
云游戏
随着云计算技术的进步,云游戏 将逐渐成为主流,玩家可以在任 何设备上随时随地畅玩游戏。
人工智能与机器学习
AI和机器学习技术在游戏中的 应用将更加广泛,例如智能 NPC、自适应游戏难度等。
跨平台社交
未来的游戏将更加注重社交互动 ,玩家可以在不同平台上与好友
高效资源管理
cocos2d-x提供高效的资源管理机 制,确保游戏在跨平台运行时能够 快速加载和释放资源。
丰富的游戏开发工具
cocos2d-x Studio
性能分析和优化工具
提供可视化的编辑器,支持场景编辑、 动画制作、UI设计等功能,提高游戏 开发效率。
内置性能分析工具,帮助开发者实时 监控游戏运行状态,发现性能瓶颈并 进行优化。

cocos creator ui适配原则

cocos creator ui适配原则

cocos creator ui适配原则
Cocos Creator是一个以Cocos2d-JS为基础的游戏开发引擎,同时也拥有强大的UI编辑和适配功能。

以下是一些Cocos Creator UI适配的原则:
1. 响应式设计:在设计UI界面时,需要考虑不同屏幕尺寸和宽高比的适配。

尽量使用相对布局,如百分比布局,以保证UI在不同分辨率下都能正确显示。

2. 自动适配:Cocos Creator提供了自动适配的功能,可以根据设备的屏幕尺寸和分辨率自动调整UI的大小和位置。

开发者只需设置UI节点的锚点和拉伸模式,引擎会自动处理适配问题。

3. 分辨率适配:在开发过程中,可以设置设计分辨率和适配分辨率。

设计分辨率是UI设计师所使用的屏幕分辨率,适配分辨率是游戏实际运行时所适配的屏幕分辨率。

通过设置适配模式和适配策略,可以保持UI在不同分辨率下的一致性。

4. 水平和垂直居中:对于需要居中对齐的UI元素,可以使用锚点和偏移量来实现水平和垂直居中。

通过调整偏移量,可以根据UI元素的大小和父节点的大小来确定居中的位置。

5. 多分辨率适配:对于拥有多个分辨率的游戏,可以创建不同的适配场景,每个场景都有不同的设计分辨率和适配分辨率。

通过切换不同的场景,可以在不同分辨率的设备上提供最佳的
用户体验。

以上是一些Cocos Creator UI适配的原则,通过合理设置锚点、布局、适配模式和适配策略,可以保证UI在不同分辨率和设
备上的良好显示效果。

Cocos2dx技术点总结

Cocos2dx技术点总结

兄弟们,手写自己思考的,那些地方不明白欢迎交流,不对的地方也请和我沟通,拜托。

孟宝亮2014.10.22第一章Cocos内存优化Cocos2dx内存优化分为纹理优化渲染优化纹理格式优化纹理尺寸限制内存优化纹理的优化主要是是对纹理深度进行优化。

我们的程序中可以修改默认的纹理深度,默认纹理深度是RGBA8888 每一个颜色通道会占用8个位,一个像素那么就会占用4个字节。

因此一张图片的所占内存的大小就是图片的宽*高*像素大小。

纹理深度可分为几种:RGBA8888 占用4个字节RGBA4444 占用2个字节RGB5A1 占用2个字节RGB565RGB888然后是对渲染的优化,比如我们要渲染两个纹理,纹理1和纹理2,那么在渲染的时候需要切换纹理,如果渲染纹理1 纹理2 ,那么我们需要切换2次纹理,有什么方法可以切换一次就可以渲染呢?那就是使用CCSpritBatchNode , 具体思路是什么样的呢?我们把纹理1和纹理2合并到一张图上,这样我们渲染的时候始终都是一张纹理,就减少了多个纹理直接切换的操作。

纹理格式的优化。

我们常说游戏中使用pvr格式的纹理会增加加载速度,并且占用更小的内存。

但是这种方案是针对于IOS设备的,安卓设备无效的。

这是因为IOS对pvr格式的纹理可以进行硬件加速,而安卓设备还是软件加速。

内存的优化,主要就是内存池的解决方案了。

如果我们的游戏在运行的时候频繁的创建销毁对象,一来这样的操作过多必然降低效率,二来也会在内存中产生很多的碎片。

最好的方式就是游戏在启动的时候,分配一块内存区域,来保存我们需要的游戏数据。

一个例子就是比如酷跑中的金币,很多金币,你需要每次都创建,然后销毁吗?答案是否定的。

我们可以创建一个池,提前创建好比如100个金币,当金币超出屏幕的时候,我们不销毁,需要的时候从池中拿出来初始化。

这样是不是避免了重复的创建和销毁的操作呢?第二章数据的存储处理数据的存储在操作中是非常多的了,主要也经常使用的两种数据格式xml和json。

Cocos2dx使用总结与分享

Cocos2dx使用总结与分享

贴图资源管理(CCTextureCache)



差评! 只管生不管养的设计,释放资源需要上层额外 封装,不然会有大量的滞留贴图资源 简单的调用removeUnusedTextures会引发更 多的问题
贴图动画解决方案 (CCSpriteFrameCache)


好评!
小图片打包与贴图动画的生成在TexturePacker工具 的基础上都非常顺手,TP还支持命令行执行,可集成为 批量制作工具
2D骨骼动画(CocosStudio+Bone)



好评 用的其实是第三方库,这套方案发展n年早就成 熟了,没啥大问题. 附带的编辑器也是在第三方的基础上加了些细 节功能,算是不错了
底层设计上有哪些问题




大量的使用CCArray遍历,效率低. TouchEvent的分发设计有问题,visible=false时一样会 触发,优先级设置还有bug BatchNode限制太多,用处不大 字体渲染效率低+难看.
格子地图封装(TileMap)



中评 制作45度角拼接地图用,在地图数量较多,组成 元素较单一的游戏(例如传奇类)可考虑使用. 原始代码效率较差,载入地图时创建了所有元 素.需要进行一些修改.技术中心的李成同学已 经做了一套基础的优化方案了,可以问他要.
粒子效果封装(CCParticle)eCache与CCTextureCache的 释放顺序保证
缓动解决方案(各种Animation)


中评 基础功能较单一,如果用来做角色或者特效动 画的话,需要自己修改一些底层类
游戏架构封装(CCScene等)

Cocos2d-x设计模式

Cocos2d-x设计模式

Cocos2dx 设计模式设计模式在程序设计中会经常用到,也许你从来没有留意过设计模式,其实你却一直在使用设计模式!Cocos2d-x中有不少的设计模式,本系列教程主要讨论Cocos2d-x中的设计模式,看看引擎都使用了哪些设计模式,我们今后写代码要怎样使用某种设计模式。

如果有任何错误还请留言指教,互相探讨。

设计模式之观察者模式详解什么是观察者一个目标对象可以注册多个观察者,当目标对象的状态改变的时候,可以通知观察者对象作出相应的响应。

这是标准的观察者模式的实现。

观察者模式又称为发布-订阅模式。

优缺点优点:- 实现了目标对象和观察者之间的抽象耦合,在本例中,则是实现了消息与观察者的抽象耦合。

可以定义一种消息与消息处理对象的一对多的关系,而不用担心彼此的实现细节。

缺点:- 如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。

适用场合一个抽象模型有两个方面,其中一个方面依赖于另一个方面。

将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。

一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。

一个对象必须通知其他对象,而并不知道这些对象是谁。

需要在系统中创建一个触发链,A 对象的行为将影响B对象,B对象的行为将影响C对象……,可以使用观察者模式创建一种链式触发机制。

JAVA实现采用发布-订阅模式,例如报社(被观察者)有很多订阅者(观察者),每天的早晨有新报纸就通知所有的订阅者。

Office.java:报社1 2 3 4 5 6 7 8 910111213 public interface Office {//添加观察者public void addObserver(People p);//删除观察者public void deleteObserver(People p); //通知所有的观察者public void notifyObservers(String msg); }People.java:人public interface People {//收到来自观察者的消息public void update(String msg);}BrightOffice.java:光明日报1 2 3 4 5 6 7 8 910111213141516171819 public class BrightOffice {//所有观察者的集合private ArrayList<People> peopleList = new ArrayList<People>(); public void addObserver(People p) {this.peopleList.add(p);}public void deleteObserver(Observer o) {this.peopleList.remove(o);}public void notifyObservers(String msg) {for (People p : peopleList) {p.update(msg);}}//通知public void publish() {this.notifyObservers("今天出新报纸啦!");}}OldPeople.java:老人1 2 3 4 5 6 public class OldPeople implements People{public void update(String msg) {System.out.println(msg);System.out.println("我要去取今天的新报纸啦!"); }}Test.java:测试程序1 2 3 4 5 6 7 8 public class Test {public static void main(String[] args) {People p1 = new OldPeople();BrightOffice brightOffice = new BrightOffice(); brightOffice.addObserver(p1);brightOffice.publish();}}Cocos2d-x中的观察者在Cocos2d-x中被观察者是NotificationCenter,但它不是通过自身状态改变来通知观察者,而是通过显示地发送观察者感兴趣的消息(postNotification)来通知它们。

Cocos2d-x开发环境如何配置

Cocos2d-x开发环境如何配置

搭建和配置Cocos2d-x开发环境需要在Windows7和VisualStudio2010环境下,具体步骤如下例:
下载安装cocos2d-x最新稳定版本。

下载后解压到指定目录。

找到安装目录下的cocos2d-win32.vc2010.sln文件并双击,如下图。

右键点击解决方案,再点击生成解决方案,大概需要几分钟的时间。

生成解决方案成功后,会提示=====生成:成功x个,失败x个,最新x个,跳过x个=====
接下来运行cocos2d-x,看看效果。

右建点击解决方案管理面板中的HelloWorld项目,然后设置为启动项目,如下图所示:
然后选择上面菜单中”调试”—”开始执行(不调试)”,如下图:
如果一切ok,你将会看到如下输出:
运行cocos2d-x自带的tests:右键点击解决方案管理面板中的tests项目,然后设置为启动项目,然后选择上面菜单中”调试”—”开始执行(不调试)”,你会看到如下输出,可以测试很多官方提供的例子,按住鼠标往下拖就可以拉动滚动条。

接下来安装vc模板,双击E:\cocos2d-x\cocos2d-1.0.1-x-
0.12.0\template\msvc\InstallWizardForVS2010.js,安装成功后会弹出一个对话框,如下图:
如需了解更多cocos2d-x开发知识,请至麦子学院官网查看。

Cocos2dx的屏幕适配方案

Cocos2dx的屏幕适配方案

Cocos2dx的屏幕适配方案资源分辨率:表示我们的图片的分辨率。

设计分辨率:表示我们设计的分辨率。

可以这么认为,如果将我们的程序放到这个分辨率的设备上,那么我们的程序将完美显示。

•屏幕分辨率:实际屏幕的分辨率。

•getVisibleSize:表示获得可视区域的大小,如果DesignResolutionSize同屏幕尺寸一样大,则getVisibleSize等于getWinSize。

•getVisibleOrigin:表示可视区域的起点坐标,有的策略会导致一部分界面超出屏幕,所以我们需要获取真正显示在屏幕上的起始点的坐标。

•DesignResolutionSize:表示设计方案,即我们的游戏完美支持的分辨率方案,一般根据图片资源的尺寸来定,自适配时会按照这个分辨率计算出缩放因子。

五种适配方案•SHOW_ALL:屏幕宽、高分别与设计分辨率宽、高计算缩放因子,取较小者作为宽、高的缩放因子。

可保证设计区域全部显示到屏幕上,但可能会有黑边。

•EXACT_FIT:屏幕宽与设计宽的比值作为x方向的缩放因子,屏幕高与设计高的比值作为y方向的缩放因子。

可保证设计区域完全铺满屏幕,但是可能会出现图像拉伸。

这种方式比较容易理解。

•NO_BORDER:屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较大者作为宽、高的缩放因子。

可保证设计区域在一个方向上铺满屏幕,而另一个方向一般会超出屏幕区域。

NO_BORDER是之前官方推荐使用的方案,没有拉伸图像,同时在一个方向上撑满了屏幕。

其2.1.3版本之后新增加了两种策略,相对于之前的三种策略更有优势。

(2)FIXED_HEIGHT和FIXED_WIDTH根据屏幕分辨率的宽(高)和设计分辨的宽(高)比例来修正设计分辨率的高(宽)。

这两种策略的转换过程如图9-3所示。

图9-3 新增加策略的修正过程•FIXED_HEIGHT:设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。

cocosCreator多种屏幕适配方案

cocosCreator多种屏幕适配方案
适用多种屏幕大屏小屏异形屏等
cocosCreator多 种 屏 幕 适 配 方案
cocosCreator2.2.0以上版本测试过,低版本未测试。适用多种屏幕(大屏,小屏,异形屏等)。
下面附上代码:
start(){
this.resetSize(this.node);
}
/** * 手机屏幕适配 * @param cav */ resetSize(cav) { let frameSize = cc.view.getFrameSize(); let designSize = cc.view.getDesignResolutionSize();
bgScale = canvasnode.width / bgNode.width; bgNode.width *= bgScale; bgNode.height *= bgScale; } }
if (frameSize.width / frameSize.height > designSize.width / designSize.height) { cav.width = designSize.height * frameSize.width / frameSize.height; cav.height = designSize.height; cav.getComponent(cc.Canvas).designResolution = cc.size(cav.width, cav.height);
} else { cav.width = designSize.width; cav.height = designSize.width * frameSize.height / frameSize.width; cav.getComponent(cc.Canvas).designResolution = cc.size(cav.width, cav.height);

cocos改变场景屏幕方向的方法

cocos改变场景屏幕方向的方法

cocos改变场景屏幕方向的方法在 Cocos Creator 中,改变场景屏幕方向通常涉及到对游戏视图的设置。

以下是一些常用的方法来改变屏幕方向:1. 使用分辨率适配:在项目的 `` 文件中,你可以设置 `` 为 `SHOW_ALL`、`NO_BORDER` 或 `SHOW_ALL_WITH_BLACK_BORDER`,以适应不同的屏幕尺寸和方向。

例如,设置为 `SHOW_ALL` 将使游戏全屏显示,并自动调整大小以适应屏幕。

2. 使用布局管理器:在 Cocos Creator 中,你可以使用布局管理器来控制场景中的节点布局。

例如,你可以使用 `` 组件来控制节点在屏幕不同方向下的布局。

3. 调整节点位置:你可以直接调整场景中节点的位置,以适应不同的屏幕方向。

这可以通过设置节点位置的 X 和 Y 值来实现。

4. 旋转节点:如果你的节点是一个可旋转的组件(如 ``),你可以使用 `rotation` 属性来旋转它,以适应不同的屏幕方向。

5. 调整摄像机:你还可以调整摄像机的位置和角度,以改变游戏的视角和显示效果。

例如,通过调整摄像机的位置或旋转摄像机来适应不同的屏幕方向。

6. 监听屏幕旋转事件:在某些情况下,你可能希望在屏幕方向改变时执行某些操作。

你可以监听 `(_CHANGED)` 事件来检测屏幕方向的改变。

7. 使用自定义分辨率:在某些情况下,你可能需要使用自定义分辨率来适应特定的屏幕尺寸或方向。

这可以通过在项目的 `` 文件中设置 `` 来实现。

记住,不同版本的 Cocos Creator 可能有些许差异,所以确保查看你正在使用的版本的官方文档或资源来获取最准确的信息。

基于Cocos2dx引擎的2D游戏开发与优化

基于Cocos2dx引擎的2D游戏开发与优化

基于Cocos2dx引擎的2D游戏开发与优化Cocos2d-x是一个开源的跨平台游戏开发框架,广泛应用于2D游戏的开发。

结合C++语言和OpenGL技术,Cocos2d-x提供了丰富的功能和灵活性,使开发者能够快速高效地开发出优质的游戏作品。

本文将介绍基于Cocos2d-x引擎的2D游戏开发与优化的相关内容,包括开发环境搭建、基本原理、常用功能模块、性能优化技巧等方面。

1. 开发环境搭建在开始使用Cocos2d-x进行游戏开发之前,首先需要搭建好相应的开发环境。

通常情况下,我们可以选择在Windows、MacOS或Linux 系统上进行开发。

以下是搭建Cocos2d-x开发环境的基本步骤:下载并安装Cocos2d-x引擎。

配置Cocos2d-x环境变量。

创建一个新的Cocos2d-x项目。

在IDE中导入项目并进行编码。

2. 基本原理Cocos2d-x引擎采用了一种基于场景(Scene)和节点(Node)的层次结构来管理游戏对象。

游戏场景可以看作是一个容器,包含了多个节点,每个节点可以是精灵(Sprite)、标签(Label)、粒子系统(Particle System)等。

通过对节点进行位置、旋转、缩放等变换操作,可以实现复杂的游戏效果。

3. 常用功能模块3.1 精灵(Sprite)精灵是Cocos2d-x中最基本的游戏对象,可以加载并显示图片资源。

通过设置精灵的位置、大小、旋转等属性,可以在游戏场景中呈现出各种角色、道具和背景。

3.2 场景(Scene)场景是游戏中不同画面的切换单位,每个场景可以包含多个节点。

通过管理不同的场景,可以实现游戏中的开始画面、关卡选择、游戏主界面等功能。

3.3 动作(Action)动作是Cocos2d-x中用于实现对象运动和变换效果的重要模块。

通过创建不同类型的动作对象,如移动、旋转、缩放等,可以让精灵在游戏中实现各种生动的动画效果。

3.4 碰撞检测(Collision Detection)碰撞检测是游戏开发中常用的技术之一,用于判断游戏对象之间是否发生碰撞。

win7(x64)+VS2012+cocos2d-x环境的配置以及试运行

win7(x64)+VS2012+cocos2d-x环境的配置以及试运行

win7(x64)+VS2012+cocos2d-x环境的配置以及试运行1.首先确保已经安装好了VS2012(没有安装的自己按教程安装)2.下载cocos2d-x的稳定版本(特别强调要稳定版本,否则后来的安装会出问题)我的是cocos2d-2.1rc0-x-2.1.2-hotfix,官网下载的。

3.解压到你想要的目录,找到build-win32.bat,双击运行,需要蛮久的时间,慢慢等。

我的在E:\编程工具\VS2012\Cocos2dx\cocos2d-2.1rc0-x-2.1.2目录下面4。

找到install-tamplates-msvc.bat,双击运行,这个很快一下子就运行完了。

我的在E:\编程工具\VS2012\Cocos2dx\cocos2d-2.1rc0-x-2.1.2目录下面做完上面的工作,基本上是把工作都完成了,下面试着生成一个简单的工程。

1.打开VS2012,新建一个Cocos2d-x的应用程序如下图项目名字为Cocos_Test2013_0805,文件位置自己选,然后一路点完成就行了。

按F7,生成解决方案会报很多的错误。

接下来需要做一些配置,让这些错误消失。

其实在我们运行完build-win32.bat这个批处理文件之后,解压cocos2d-x的主目录下面会多出一个Debug.win32的文件夹双击进入,把里面所有的.lib文件都复制一份到你的VS2012的lib文件夹内,让VS2012的ID E可以找到。

lib文件夹一般在你VS2012的安装目录下面的VC文件夹内。

我的是E:\编程工具\VS2012\VC\lib。

把里面的所有的.dll文件都复制一份到C盘的window下的system文件夹内。

在刚刚解压的cocos2d-x的根目录下找到以下三个文件夹把这三个文件夹都复制一份到刚刚新建的工程里面去(每次新建的工程都要复制)然后按F5调试运行,成功了,开心吧。

coco2d-x面试题

coco2d-x面试题

Cocos2d-x面试题(无脑码农)1,阐述cocos2d-x 中CCScene CCLayer CCSprite CCNodeCCScene:CCScene是app工作流程上独立块,一个app可能拥有多个scene,但是在任何时候只能有一个是激活状态的。

一个CCScene对象由一个或多个CCLayer组成,layer之间是前后相连的。

Layer提供了scene的外观和行为。

通常的用法是直接用一个或多个layer实例化一个sceneCCScene的子类CCTrasitionScene实现移动transitions,提供两个scene之间的转移效果,由于scene是CCNode的子类,所以scene可以手工或者用aciton来转变坐标。

所有层和精灵都是他的(子节点)children。

CCScene的4个基本方法:runWithScene(运行画面),replaceScene(替换场景例如从主菜单进入游戏界面),pushScene(暂停界面),popScene(从暂停的界面还原到游戏界面)Layers:CCLayer同样是CCNode的子类,通常用addChild方法添加子节点。

CCLayer对象定义了可描绘的区域,定义了描绘的规则。

CCLayer可以实现半透明的效果,层的事件相应机制: 最外层最先接受到事件(屏幕触碰),最后是底层,如果在某层处理了该事件,则后面的层不会在接受到事件信号Spritescocos2d的sprite对象就是一个可以移动、选择、伸缩、动画的2d图形,CCSprite 对象的子成员中可以包含其它的CCSprite 对象。

当CCSprite 对象转换坐标系的时候,它所包含的CCSprite 对象也会转换转换坐标系。

sprites 是CCNode 的子类, 所以他们也可以使用actions来转换坐标. See Actions for more detail about actions.CCNode是场景、层、菜单、精灵等所有节点的父类,它是一个抽象类,没有可视化表示形式,定义了所有node共有的属性和方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档