首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从plist旋转sprite节点

从plist旋转sprite节点
EN

Stack Overflow用户
提问于 2015-07-18 20:13:07
回答 1查看 81关注 0票数 1

我是Spritekit的新手,我正在创建一个游戏,我想让我的sprite节点在用户触摸它们时旋转。因为游戏有很多关卡,而且精灵节点都会以不同的角度旋转,所以我想把各个浮点值放在一个plist文件中,让节点在用户触摸时读取它们的角度旋转。

我知道,理想情况下,为了有效地旋转sprites,您应该编写如下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sprite.zrotation = M_PI/.5

但是我想从plist中调用浮点值,但我不确定如何在plist中正确地存储旋转浮点值,以及如何让spritenode从plist中调用它们的z旋转。有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-18 20:35:15

假设随机化这些角度不是您想要的,并且您需要将每个级别的所有角度存储在某个位置,您可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// saving a float
[defaults setFloat:0.123 forKey:@"someKey"];

[defaults synchronize];

要检索值,可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// getting an Float
float myFloat = [defaults floatForKey:@"someKey"];

请记住,用户可以很容易地更改NSUserDefaults类使用的.plist文件。如果这让您感到困扰(可能不会),您可以硬编码NSArray或NSDictionary中的所有值。

编辑:

下面是你如何使用read/write values using .plist file。当我发布答案时,我没有注意到您实际上询问的是.plist文件,而不是NSUserDefaults (它也使用.plist文件)。所以,很抱歉,是我的错:)

下面是硬编码值的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import "GameScene.h"

@implementation GameScene{

    NSMutableArray *levels;

}

-(void)didMoveToView:(SKView *)view {
    /* Setup your scene here */

    levels = [NSMutableArray array];

    NSDictionary *level_1 =
    [NSDictionary dictionaryWithObjects:@[@(0.1f),@(0.01f),@(0.001f)] forKeys:@[@"key_1",@"key_2",@"key_3"]];

    NSDictionary *level_2 =
    [NSDictionary dictionaryWithObjects:@[@(0.2f),@(0.02f),@(0.002f)] forKeys:@[@"key_1",@"key_2",@"key_3"]];

    NSDictionary *level_3 =
    [NSDictionary dictionaryWithObjects:@[@(0.3f),@(0.03f),@(0.003f)] forKeys:@[@"key_1",@"key_2",@"key_3"]];



    [levels insertObject:level_1 atIndex:0];
    [levels insertObject:level_2 atIndex:1];
    [levels insertObject:level_3 atIndex:2];

    NSString *key = @"key_1";
    NSUInteger level = 1;

    if([self isAngleAvailableForKey:key andLevel:level]){

        CGFloat angle = [self getAngleForKey:key andLevel:level];

        NSLog(@"Angle for level %lu and key %@ is %f",(unsigned long)level,key,angle);

    }else{
        NSLog(@"Error, wrong level(%lu) or key(%@)",(unsigned long)level, key);
    }


}


//Check to see if there is such a level or key
-(BOOL)isAngleAvailableForKey:(NSString*)key andLevel:(NSUInteger)level{



    if(level < 1 || level > [levels count]){return NO;}

    if([[levels objectAtIndex:level-1] valueForKey:key] == nil){return NO;}

    return YES;

}
//If already is good, get the angle for given level and key
-(CGFloat)getAngleForKey:(NSString*)key andLevel:(NSUInteger)level{


    return [[[levels objectAtIndex:level-1] valueForKey:key] floatValue];

}

如果数据量不大,我个人的偏好是硬编码值。但这取决于你的决定。

如果有大量数据,那么.plist文件可能是更好的选择,因为它可以节省您不必要的内存消耗。

如果数据量非常小,那么我猜你甚至可以使用NSUserDefaults,但这应该是最后一个选项,因为NSUserDefaults是用来存储首选项或类似的东西的。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31495159

复制
相关文章
Sprite 从PS切图到具体实现完整过程
CSS雪碧图(sprite)是一种网页图片非常高效的处理方式,它是将页面中包含的零星图片利用PS制作到一张大图中,再结合background-position属性进行定位的的方式实现。 它的优点有以下方面: 1.      减少http请求次数。 2.      减少图片字节数(很多人有疑问为什么合在一起还会降低字节数,图片明明变大了。原因是这样的:每个图片都是有固定的格式的,包括图像头、版本号、appo块等等,这些属性都会占一定的字节数。因此合在一起回降低字节数)。 缺点:维护成本增加,比如要修
从入门到进错门
2018/08/21
8580
Sprite 从PS切图到具体实现完整过程
【Cocos2d-x】Cocos2d-x精灵的性能优化
使用纹理图集的优点: 1、减少文件读取次数,读取一张图片比读取一推小文件要快 2、减少OpenGL ES绘制调用并且加速渲染 OpenGL ES 1.1仅仅能够使用2的n次幂大小的图片(即宽度或者高度是2、4、8、64…)。 如果采用小图片OpenGL ES1.1会分配给每个图片2的n次幂大小的内存空间,即使这张图片达不到这样的宽度和高度也会分配大于此图片的2的n次幂大小的空间。那么运用这种图片集的方式将会减少内存碎片。 虽然在Cocos2d-x v2.0后使用OpenGL ES2.0,它不会再分配2的几次幂的内存块了,但是减少读取次数和绘制的优势依然存在。 3、减少内存消耗。 4、Cocos2d-x全面支持Zwoptex和TexturePacker,所以创建和使用纹理图集是很容易的
谙忆
2021/01/21
6030
【Cocos2d-x】Cocos2d-x精灵的性能优化
【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
精灵在Cocos2d-x中的地位就像一场电影中的主角,男主角/女主角,是一场电影中的灵魂所在。也是我们游戏中的灵魂 无论我们控制的对象还是电脑控制的对象,我们都称之为精灵,或者背景中的图片,也可以称为精灵、只要在游戏场景中的东西,都是可以用精灵来做的。比如菜单,可以做成精灵菜单。 还有些精灵是和物理引擎有关的,有一些物理特效。 本章讲的精灵,只是一般意义上的精灵。
谙忆
2021/01/21
8020
【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
浅谈SVG Sprite
随着前端技术的发展,有越来越多的方法实现icon的制作,同时为了满足市面上各种大屏幕分辨率,字体图标icon font应运而生,字体图标的制作也是一种全新的设计方式,但是icon font 在wind
携程技术
2018/02/06
1.1K0
浅谈SVG Sprite
cocos2d-x for android:士兵听我的命令移动
上一篇文章讲述了利用cocos2d-x构建精灵的动画效果,今天打算以此为引子,创建一个在移动时同时指挥角色到我手指触摸的移动地点,那么就开始吧。
全栈程序员站长
2022/07/05
5240
cocos2d-x for android:士兵听我的命令移动
R语言ggtree按照指定的节点旋转树
http://yulab-smu.top/treedata-book/index.html
用户7010445
2021/01/20
1.8K0
R语言ggtree按照指定的节点旋转树
打开 plist 文件
对于使用苹果的进阶或资深玩家来说,有时候要编辑plist文件,比如要弄两个qq,要修改info.plist下的sku,而要是没有工具,就不能随意查看和编辑plist文件了。再有,可能要通过修改plist来弄某些游戏,比如增加分值,增加金币等。下面介绍一下怎么查看和编辑plist文件。
iOS程序应用
2023/04/17
3K0
CSS精灵图(sprite)
说到精灵图(雪碧图),大家肯定和我一样觉得这个很新鲜。在学习了有关精灵图(雪碧图)的一些知识后,就来和大家讨论一下,我个人对精灵图(雪碧图)的一些理解和实现方法吧。
全栈程序员站长
2022/06/28
8370
CSS精灵图(sprite)
Unity Sprite Altas「建议收藏」
Sprite Atlas(精灵图集) Sprite Atlas 针对现有的图集打包系统Sprite Packer在性能和易用性上的不足,进行了全面改善。除此之外,相比Sprite Packer,Sprite Atlas将对精灵更多的控制权交还给用户。由用户来掌控图集的打包过程以及加载时机,更加利于对系统性能的控制。 Sprite Atlas的主要有以下三个功能: 1.创建、编辑图集以及设定图集参数
全栈程序员站长
2022/11/01
2K0
Unity Sprite Altas「建议收藏」
由主节点配置从节点从而构建集群
主节点 改名字,改为master,hosts 改hadoop的slaves加四个xml slaves是加一个节点就要改一次 从节点 新建hadoop用户,修改权限,赋予权限 ALL =… 改好主机名,按node01 node02……规则 配好ssh,保证可以通信 关防火墙,iptables stop 关selinux 自ssh可以,主对从可以免密ssh 用scp传jdk和hadoop到从节点的tmp目录下 可能会出现权限问题,使用tmp目录则不要紧,文件夹权限问题 配jdk和hadoop的环境变量 新
ZONGLYN
2019/08/08
7820
CSS精灵技术(sprite)
当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户。
星辰_大海
2020/09/30
1.1K0
Plist Editor Pro(plist文件编辑工具)V2.5[64 bit] for Windows Crack
链接:https://pan.baidu.com/s/1CrzI_9GRjquUgQy4LIL0BA 密码:1t70
obaby
2023/02/24
1.8K0
cocos2d3.0 Scale9Sprite
四、S9FrameNameSpriteSheetRotatedScaledNoInsets
全栈程序员站长
2022/07/09
4240
cocos2d3.0 Scale9Sprite
TexturePacker压缩png的命令
压缩png效果最好的当然是TinyPNG这种神器了,不过一般情况下TexturePacker压缩出来的也基本上能达到效果。
meteoric
2018/11/19
2.5K0
Plist文件是什么?
plist 文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据。在过去,plist 文件通常是以.plist 格式存储的。然而,随着时间的推移,人们开始使用.plistx 格式来存储更复杂的数据结构和数据。如果您需要将.plist 文件转换为.plistx 格式,可以使用在线工具或命令行工具。本文将为您介绍如何使用在线工具将.plist 文件转换为.plistx 格式。
爱学iOS的小麦子
2023/04/12
1.2K0
Plist文件是什么?
plist 文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据。在过去,plist 文件通常是以.plist 格式存储的。然而,随着时间的推移,人们开始使用.plistx 格式来存储更复杂的数据结构和数据。如果您需要将.plist 文件转换为.plistx 格式,可以使用在线工具或命令行工具。本文将为您介绍如何使用在线工具将.plist 文件转换为.plistx 格式。
iOS程序应用
2023/04/17
1.8K0
Plist文件是什么?
如何打开 plist 文件
plist 文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据。在过去,plist 文件通常是以.plist 格式存储的。然而,随着时间的推移,人们开始使用.plistx 格式来存储更复杂的数据结构和数据。如果您需要将.plist 文件打开,可以使用在线工具或命令行工具。本文将为您介绍如何使用在线工具打开.plist 文件。
iOS程序应用
2023/04/12
2.8K0
Cocos Creator之脚本使用资源
在 Cocos Creator 中,使用场景文件名(不包含扩展名)来索引指代场景。并通过以下接口进行加载和切换操作:
李小白是一只喵
2021/04/30
1K0
Cocos Creator之脚本使用资源
点击加载更多

相似问题

Sprite套件中的停止节点旋转

14

旋转sprite javascript

22

XNA Sprite旋转

13

旋转sprite本身?

22

Sprite旋转XNA

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文