SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
来源:互联网 发布:淘宝虚拟商品退款规则 编辑:程序博客网 时间:2024/06/05 03:04
一个SpriteKit项目在其他设备上运行都无问题(无论是真机或是模拟器),但是在iPhone6 Plus上会出现精灵对象纹理被过度放大的现象:
从上图中大家可以看到无论是主角或是道具球都过大了.
看了一下精灵图片是放在atlas纹理集文件夹中的:
可以看到PowerUp和Player都有对应缩放的版本:Player.png,Player@2x.png以及Player@3x.png.
在各个图片的属性中检查图片的尺寸也都正确,看不出神马问题…
找到SKSpriteNode对象初始化的代码看看:
let orbNode = SKSpriteNode(imageNamed: "PowerUp")
貌似也没什么问题…突然想到上述图片都放在纹理集中,那么都应该被Xcode做过附加操作以形成额外的整张图片,是不是这里出了问题?
将Player共3张图片放到Assets.xcassets中:
PowerUp也如法炮制,然后再次编译运行代码,这回所有精灵的尺寸都是正确的了,没有发生放大的情况!看来@x后缀只对直接的图片资源有效,因为原来你是将图片放到纹理集中,所以系统处理就会出错.
但如果我只想用纹理集呢?还是有办法!
将SKSpriteNode原初始化代码改为如下:
let atlas = SKTextureAtlas(named: "sprites")let texture = atlas.textureNamed("PowerUp")let orbNode = SKSpriteNode(texture: texture)
这回一切都正常了:
为什么只在iPhone6p上有问题?因为6p引入了一个新的3x模式,之前所有的都是2x(包括6),估计在这里绊了脚跟 ;]
PS:如果你在6p中将代码改为如下也是可以的:
let orbNode = SKSpriteNode(imageNamed: "PowerUp@2x")
注意是2x哦!
0 0
- SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
- 后台框架左侧在IE9下显示不正确的解决及IE浏览器类型检测
- ASP:Menu 在IE8中显示不正确的解决方法
- 低版本jQuery在Firefox中运行不正确的解决
- 解决在Winform中dataGrid第一列第一行颜色显示不正确问题。
- 解决IE8不正确显示
- 在网页加代码强制IE8使用兼容性视图解决网页显示不正确的办法
- 在网页加代码强制IE8使用兼容性视图解决网页显示不正确的办法
- 在sql*plus中显示语句执行所用的时间
- 在普通网页中调用html5+的plus对象
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- iOS 的 APP 在系统中如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?
- 解决内核驱动开发中设备名称显示不正确的问题
- iOS中collectionViewCell显示不正确的问题
- React Native中tab切换栏在iPhone 6 Plus(10.2.1)一边有碎屑式的蓝色阴影
- setRotation
- 使用REFERER跳转回修改前的分页页面
- 去掉字符串String中的换行或空格
- 在部分有序数组中查找定值
- PHP添加zip&&curl扩展
- SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
- HTML5布局元素
- 项目关键路径
- Mongoose轻松搞定MongoDB,不要回调!
- 理解LinkedHashMap
- 开始博客生涯
- hdu 2087 剪花布条
- separatorInset 设置
- camel 配置 https访问配置