- 浏览: 236463 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
yulanlian:
...
实现在删除数据后,自增列的值连续 -
RonQi:
楼主写的很好,支持原创!
Google Protocol Buffers
摘自:知易教程
Cocos2d-iPhone 实现地图显示的有主要 2 组文件:
1) 负责整体地图的显示:CCTMXTiledMap.h, CCTMXTiledMap.m
2) 负责 xml 文件读取和解析:CCTMXXMLParser.h,CCTMXXMLParser.m
在实际游戏编程中,我们主要用到以下几个类:
1) CCTMXTiledMap
Layer 类的 init 凼数中通过以下的代码加载地图:(确保 PNG 文件不 tmx 在一起)
// Load level map gameWorld = [CCTMXTiledMap tiledMapWithTMXFile:@"Level1.tmx"]; [self addChild:gameWorld z:0 tag:9];
TMXTiledMap 是从 CocosNode 直接派生出来的。他的定义比我们预想的要简单:
@interface CCTMXTiledMap : CCNode { CGSize mapSize_; CGSize tileSize_; int mapOrientation_; NSMutableArray *objectGroups_; NSMutableDictionary *properties_; NSMutableDictionary *tileProperties_; }
分析初始化凼数 init 如下:
-(id) initWithTMXFile:(NSString*)tmxFile { NSAssert(tmxFile != nil, @"TMXTiledMap: tmx file should not bi nil"); if ((self=[super init])) { [self setContentSize:CGSizeZero]; CCTMXMapInfo *mapInfo = [CCTMXMapInfo formatWithTMXFile:tmxFile]; NSAssert( [mapInfo.tilesets count] != 0, @"TMXTiledMap: Map not found. Please check the filename."); mapSize_ = mapInfo.mapSize; tileSize_ = mapInfo.tileSize; mapOrientation_ = mapInfo.orientation; objectGroups_ = [mapInfo.objectGroups retain]; properties_ = [mapInfo.properties retain]; tileProperties_ = [mapInfo.tileProperties retain]; int idx=0; for( CCTMXLayerInfo *layerInfo in mapInfo.layers ) { if( layerInfo.visible ) { CCNode *child = [self parseLayer:layerInfo map:mapInfo]; [self addChild:child z:idx tag:idx]; // update content size with the max size CGSize childSize = [child contentSize]; CGSize currentSize = [self contentSize]; currentSize.width = MAX( currentSize.width, childSize.width ); currentSize.height = MAX( currentSize.height, childSize.height ); [self setContentSize:currentSize]; idx++; } } } return self; }
CCTMXTiledMap 直接由类 CCTMXLayer 来实现地图的每一个层。每一个 CCTMXLayer 的实例都是通过 Cocos2D-iPhone 标准的 AddChild 添加给 CCTMXTiledMap 的。
2) CCTMXlayer
CCTMXLayer 类定义如下:
@interface CCTMXLayer : CCSpriteBatchNode { CCTMXTilesetInfo *tileset_; NSString *layerName_; CGSize layerSize_; CGSize mapTileSize_; uint32_t *tiles_; // GID are 32 bit NSUInteger layerOrientation_; NSMutableArray *properties_; unsigned char opacity_; // TMX Layer supports opacity NSUInteger minGID_; NSUInteger maxGID_; // Only used when vertexZ is used NSInteger vertexZvalue_; BOOL useAutomaticVertexZ_; float alphaFuncValue_; // used for optimization CCSprite *reusedTile_; ccCArray *atlasIndexArray_; }显然,CCTMXLayer 对于“瓦片”图像块的管理是通过 CCSpriteSheet 来实现的。 因此,地图的每一个“瓦片”图像就是一个 CCSprite 对象。于是,每一个“瓦片”图 像都可以迚行任意的 CCSprite 操作(增加、删除、移劢、放缩、旋转、变色...)。所有 这些操作都是劢态迚行的。这就允许我们在游戏迚行过程中的对地图迚行劢态操作,通过劢态改变地图的状态来反映游戏精灵对环境产生的影响。
发表评论
-
ios 国际化相关
2011-10-08 18:49 1413添加国际化 1. 代码中使用字符串的地方 使用 NS ... -
iPhone开发笔记
2011-09-26 21:52 1063退回输入键盘: - (BOOL) textFie ... -
ios开发基础知识 - 1
2011-09-26 21:51 1088输出 command+shift+r NSLog(@& ... -
ios---超链接的UILabel教程
2011-09-26 21:50 1492超链接的UILabel教程 -
ios开发基础问题总结
2011-09-26 21:49 1246订阅 1,如何进入应用后首 ... -
UILabel用法
2011-09-26 20:45 1780/设置换行 UILabel*label; / ... -
IPhone之UIScrollView [转载]
2011-09-22 15:55 860原文地址:IPhone之UIScrollView作者:飞 ... -
手势识别
2011-09-03 17:19 860注册: UISwipeGestureReco ... -
“碰撞”探测
2011-08-21 14:28 808首先要向大家说明的是,所谓“碰撞”探测没有大家想想 ... -
Cocos2D 的事件处理机制
2011-08-21 07:21 1562摘自:知易教程 系统当前场景对象包含多个层 ... -
cocos2d游戏开发,常用工具集合
2011-08-20 19:40 797位图字体工具Bitmap Font ToolsBMFon ... -
iPhone OS 的 Touche 事件
2011-08-20 19:34 1305知易教程 基础知识 在开始介绍 iPhone OS ... -
iPad, iPhone, and Aspect Ratio
2011-08-05 11:58 918好,现在处理iphone上 ... -
Retina Display and Cocos2D
2011-08-05 11:57 1296最新版本的cocos2d完全 ... -
网络编程总结
2011-08-04 15:41 797一:确认网络环境3G/WIFI 1. 添加源文件和fra ... -
Cocos2D界面切换方式
2011-08-04 15:37 1601CCTransitionFade, //渐隐 ... -
Protocol协议的用法
2011-08-04 15:30 1219一、说明 两个类进行通讯,用协议就比较方便。 (书 ... -
IOS开源项目和官方例子汇总
2011-08-04 14:22 1812开源项目: 扫描wifi信息:http://code. ... -
cocos2d场景和UIViewController视图的切换
2011-08-04 14:20 1582cocos2d中从场景切换到UIViewController视 ... -
视差滚动
2011-08-02 21:09 1096我们已经有一个很酷的飞船在屏幕上了,但是,它看起来就好 ...
相关推荐
Cocos2d-x 2.2.x Json解析Demo 无需引入jsoncpp库 相关博文地址:http://blog.csdn.net/u012945598/article/details/17398925
直接运行源码中的Xcode工程即可,有可能需要改下Deployment Target和选择合适的模拟器,有报头文件找不到的,可以直接注掉相关. 注意:源码仅供学习和参考使用,切勿用于商业用途,谢谢!!! 测试环境: OSX ...
模拟真实的世界是个比较麻烦的事情 通常这种事情都是交给物理引擎来做 但它们使用的过程中有个令人讨厌的地方 参数太多了 为了初始化一个简单的场景要写很多代码 在cocos2d x 3 0版本中 出现了一个新类族 physicals ...
ccobject cocos2d-xcocos2d-x最初移植自cocos2d的objective C版本。因此,在内存管理上,使用了和NSObject类似的引用计数器方法,相关接口放置在CCObject类中。
cocos2d-java cocos2d java api基本libgdx 特别说明 作者最近用unity去了,暂时不更新了 环境部署 目录结构调整: src /-引擎代码platform / {platform} / src-引擎与平台相关的代码,各平台对应的Application...
角色信息显示栏 与角色等类相关,当状态信息改变时,刷新显示内容 房屋建造、升级功能 特殊房产(银行,医院) 神灵 在地图中储存神灵的位置,在人物类中增加成员变量判断人物是否以及被什么神灵附身。 被附身的人...
MapAnalysis 游戏地图解析类 就是专门用来解析地图的,我是用TiledMap做的游戏地图编辑器~~ PhysicsSprite 物理精灵 将Sprite和box2d进行了二次封装 StaticData 静态数据类 废弃了... StaticDataEx ...
最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d 程序很简单,就一个入门级的小游戏,写完后放手机里运行了下效果还可以 开发环境 vs2010,...
我特别喜欢瓦片类的游戏,...网上一搜,我滴天,全是cocos2d的,就让我来填补一下这个空白吧。里面包括了TiledMap编辑器,还有练习资源文件和相关Cocos Creator的工程文件,教程可以参见我的博客blog.csdn.net/potato47
碰撞检测通常是游戏开发的难点,作为引擎必然少不了碰撞检测部分,这里我们还是按照cocos2d的构架,使用Box2d作为物理引擎,下面我们将通过在Ophone平台实现一个小游戏,来对Box2d物理引擎进行学习。 Box2d ...
CCLayer类是用来接收触摸输入的。不过你要首先启用这个功能才可以使用它。你通过设置isTouchEnabled为YES来让层接收触摸事件: 代码如下:self.isTouchEnabled = YES; 此项设定最好在init方法中设置。你可以在任何...
cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下。(mac下没有分,是整个一坨) armature(目录): animation(目录):动画控制相关。 CCProcessBase(文件): ...
我特别喜欢瓦片类的游戏,...网上一搜,我滴天,全是cocos2d的,就让我来填补一下这个空白吧。里面包括了TiledMap编辑器,还有练习资源文件和相关Cocos Creator的工程文件,教程可以参见我的博客blog.csdn.net/potato47
html5 挺火,写个html5游戏玩玩吧,想起cocos2d 貌似各个平台都有,网上找了找,下载了个Cocos2d-html5引擎包。 貌似另一个开源引擎lufylegend.js也很好,下次用用lufylegend.js试试。 开发环境 chrome Cocos2d-...
然后详细地讲解了内存管理、视图和视图控制器、键盘输入和自定义键盘、绘图、触摸事件与手势识别、动画、多媒体播放、容器类、文件系统、同时性编程与定时器、cocos2d基础、连接设备、加速度传感器、地图与链接...
三、安装cocos,这里我们使用的是cocos2d-x 3.10,3.10版本,Cocos2d-x与cocos整合升级为Cocos引擎,下载后是exe程序,双击直接安装,很简单。 四、下载自动提示补全词典,我还下载了cocos2dx-3.10-api.lua,把下载...