博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2D iOS之旅:如何写一个敲地鼠游戏(五):设置背景
阅读量:6388 次
发布时间:2019-06-23

本文共 2412 字,大约阅读时间需要 8 分钟。

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

设置背景

接下来,打开HelloWorldScene.m文件,然后找到你的init方法.删除创建HelloWorld标签的4行,用以下代码替换:

// Determine names of sprite sheets and plists to loadNSString *bgSheet = @"background.pvr.ccz";NSString *bgPlist = @"background.plist";NSString *fgSheet = @"foreground.pvr.ccz";NSString *fgPlist = @"foreground.plist";NSString *sSheet = @"sprites.pvr.ccz";NSString *sPlist = @"sprites.plist";if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {    bgSheet = @"background-hd.pvr.ccz";    bgPlist = @"background-hd.plist";    fgSheet = @"foreground-hd.pvr.ccz";    fgPlist = @"foreground-hd.plist";    sSheet = @"sprites-hd.pvr.ccz";    sPlist = @"sprites-hd.plist";            }// Load background and foreground[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:bgPlist];       [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:fgPlist];// Add backgroundCGSize winSize = [CCDirector sharedDirector].winSize;CCSprite *dirt = [CCSprite spriteWithSpriteFrameName:@"bg_dirt.png"];dirt.scale = 2.0;dirt.position = ccp(winSize.width/2, winSize.height/2);[self addChild:dirt z:-2]; // Add foregroundCCSprite *lower = [CCSprite spriteWithSpriteFrameName:@"grass_lower.png"];lower.anchorPoint = ccp(0.5, 1);lower.position = ccp(winSize.width/2, winSize.height/2);[self addChild:lower z:1];CCSprite *upper = [CCSprite spriteWithSpriteFrameName:@"grass_upper.png"];upper.anchorPoint = ccp(0.5, 0);upper.position = ccp(winSize.width/2, winSize.height/2);[self addChild:upper z:-1];// Add more here later...

让我们一段一段的看一下,因为这里有好多新的东东:

  • 确定加载精灵表和plists的名称.该段列出了要被加载的精灵表和被TexturePacker创建plists文件的名称.注意在iphoen里,Cocos2D将在高清显示开启时自动根据设备的屏幕选择合适版本的图片.但是在ipad中除非你告诉它,否则它不会加载”-hd”版本的图片.所以我们检查是否为ipad,如果是则使用高清图片.
  • 加载背景和前景.下一步是把你将使用的背景和前景相关的每一个精灵加载到精灵帧缓冲中去.注意这些精灵并不会实际被加载到CCSpriteBachNode的任何地方 — 因为这些图片只会被使用一次.
  • 添加背景.背景图片被加载到该层上,成为其子节点(z序为-2使其可以出现在所有东东的下方).将图片放大2倍因为我们故意让其更小便于居中和节省空间.
  • 添加前景.前景有2个部分,为了容易的放置图片,它将上半部分图片的锚点设置为居中/底部,下半部设置为居中/顶部,并且使锚点居中于屏幕.这可以让你不用任何复杂的数学就可以在任何设备上正确的显示.注意一部分的背景将在iphone上超出屏幕显示,但对于该背景来说没有问题,甚至都不会注意到.同样注意这2部分的图片的z序不一样,so低z序的图片出现在上面.

编译运行代码,你应该看到如下画面!在iphone和ipad模拟器上都试一下,确保所有设备都显示正确.

这里写图片描述

如果你在高清屏上运行并且放大,你将注意到仍然使用的是普通的图片:

这里写图片描述

这是因为我们并没有在之前”高清屏和Cocos2D”章节里做其中的第一步:调用CCDirector的enableRetinaDisplay方法去开启高清支持.

在开启高清支持之后再编译运行你的代码,现在你会发现在高清屏设备上使用的是HD图片了.

你可能感兴趣的文章
Thymeleaf教程 (三) 创建一个多语言的首页
查看>>
OSChina 周六乱弹 ——你们猜狗的舌头有多长
查看>>
OSChina 周日乱弹 —— 爱丽丝爱吃京酱肉丝
查看>>
2018.11月微信小程序优质开源项目
查看>>
IOS 未来几年的认知
查看>>
解决中文乱码--加密
查看>>
浅析全民社交创业梦
查看>>
Java操纵MongoDB_1(环境设置)
查看>>
C#字符串操作--获取字符或字符串的位置、数量
查看>>
php - 字符串处理
查看>>
bulk collect 以及ref cursor使用
查看>>
mysql性能优化-慢查询分析、优化索引和配置
查看>>
图解分布式一致性协议Paxos
查看>>
Jedis与Redisson选型对比
查看>>
MongoDB学习笔记(查询)
查看>>
freemarker自定义标签的写法和使用
查看>>
使用Gitlab CI进行持续集成
查看>>
Win32编程基本概念
查看>>
×××灯式样的站点链接说明,链接提示
查看>>
Linux下动态IP和静态IP的设置方法
查看>>