如何快速更改 SKSpriteNode 的颜色?

2024-05-06

我创建了一个游戏SKSpriteNode那是黑色的,当用户触摸屏幕时我想要SKSpriteNode更改为白色。我已经用谷歌搜索了一切,并尝试了很多不同的策略,但没有成功。有谁知道如何做到这一点?

这是我的场景的代码:

var blackBird = SKSpriteNode()

override func didMoveToView(view: SKView) {
    //Black Bird
    var blackBirdTexture = SKTexture(imageNamed:"blackbird")
    blackBirdTexture.filteringMode = SKTextureFilteringMode.Nearest

    blackBird = SKSpriteNode(texture: blackBirdTexture)
    blackBird.setScale(0.5)
    blackBird.position = CGPoint(x: self.frame.size.width * 0.35, y:
        self.frame.size.height * 0.6)

    blackBird.physicsBody =
        SKPhysicsBody(circleOfRadius:blackBird.size.height/2.0)
    blackBird.physicsBody!.dynamic = true
    blackBird.physicsBody!.allowsRotation = false

    self.addChild(blackBird)
}

override func touchesBegan(touches: Set<NSObject, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
    let location = touch.locationInNode(self)

    blackBird.color = .whiteColor()
    blackBird.colorBlendFactor = 1.0
}

您可以使用color属性于SKSpriteNode, 例如:

sprite.color = .whiteColor()

请记住,如果您的SKSpriteNode有一个纹理,你需要设置colorBlendFactor到非零值以查看您的颜色。来自SKSpriteNode文档 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKSpriteNode_Ref/index.html#//apple_ref/occ/instp/SKSpriteNode/colorBlendFactor on colorBlendFactor:

该值必须是 0.0 到 1.0 之间的数字(含 0.0 和 1.0)。默认 值 (0.0) 表示颜色属性被忽略并且 纹理的值应不加修改地使用。对于大于的值 0.0,纹理在绘制到场景之前与颜色混合。


如果你想动画颜色变化,你可以使用SKAction:

let colorize = SKAction.colorizeWithColor(.whiteColor(), colorBlendFactor: 1, duration: 5)
sprite.runAction(colorize)

来自SKAction文档 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/#//apple_ref/occ/clm/SKAction/colorizeWithColor:colorBlendFactor:duration: on colorizeWithColor:colorBlendFactor:duration:

此操作只能由 SKSpriteNode 对象执行。当。。。的时候 动作执行时,精灵的颜色和 colorBlendFactor 属性 对他们的新价值观充满活力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何快速更改 SKSpriteNode 的颜色? 的相关文章

随机推荐

  • 如何防止查询字符串被篡改?

    Hii 我有一个像 http project page1 aspx userID 5 http project page1 aspx userID 5 如果手动更改 userID 参数 该操作将无法执行 这怎么可能 大家好 谢谢您的帮助 我
  • 如何在 Angular 6 单元测试中调试 HeadlessChrome 0.0.0 (Linux 0.0.0) ERROR { "isTrusted": true } ?

    当我运行测试套件时 我在与我一直在使用的单元测试完全不同的单元测试中遇到错误 我做错了什么 HeadlessChrome 0 0 0 Linux 0 0 0 ERROR isTrusted true 然后是一些构建步骤 并在测试执行期间出现
  • 动态创建结构的List<>

    在 C 中 我想创建一个基于动态值类型的列表 例如 void Function1 TypeBuilder tb tb is a value type Type myType tb CreateType List
  • 使用“旧”对象引用使用构建器模式创建新对象

    我正在尝试构建器模式 并陷入如何向新创建的对象添加新 属性 的困境 public class MsProjectTaskData private boolean isAlreadyTransfered private String req
  • CMake 错误:CMake 无法找到与“MinGW Makefiles”对应的构建程序

    我正在尝试使用 cmake 为 c 构建 Box2D 库 当我运行 cmake gui 时出现错误 CMake Error CMake was unable to find a build program corresponding to
  • svn 本地副本中修改的文件列表

    我使用 Tortoise 客户端签出 提交我对 SVN 的更改 但我发现这有点困难 因为我无法找到本地副本中更改的所有文件的列表 有什么捷径或者我忽略的东西吗 我是 SVN 新手 供参考 我不熟悉乌龟 但是对于 linux 的颠覆我会输入
  • 在 Laravel 中记录用户操作

    我正在尝试将用户执行的所有操作 登录 注销 CRUD 记录到我的数据库中的日志表中 并且从我所看到的事件看来是执行此操作的正确方法 我添加了一个did action User 模型的方法 它将给定用户的操作记录到数据库中 这是我到目前为止所
  • 使用 TinyXml2 提取子树 XML 字符串

    我想做和里面那个人完全相同的事情这个问题 https stackoverflow com questions 11935689 how to convert an xmlelement to string in tinyxml2 我想将 X
  • 将yield语句转换为Python中的生成器表达式

    我有一个关于将yield语句转换为生成器表达式的问题 所以我有一个小的yield方法 它获取一个函数和一个起始数字作为其输入 并且基本上为每个先前被调用的数字调用该函数 即 第一次调用返回初始号码 第二次调用返回函数 初始编号 第三次调用返
  • 如何处理 Android Fragment 中的后按

    我的应用程序中有 3 个片段 例如HomePage Frag1 Frag2 Frag3 Frag4 那么发生了什么 我在我的应用程序中使用了导航抽屉 在主页上 我有一个网格视图 其中包含所有四个片段的链接 如果用户从Homepage gt
  • 使用自定义验证器进行 ASP.Net 字数统计

    我正在处理的 ASP Net 2 0 项目的要求将某个字段限制为最多 10 个单词 不是字符 我当前正在使用带有以下 ServerValidate 方法的 CustomValidator 控件 Protected Sub TenWordsT
  • maven 的 was6 插件可以与 WAS 7 一起使用吗

    据我所知 WAS 7 没有特定的 Maven 插件 所以我想知道 was6 maven plugin 是否可以与较新版本的服务器一起使用 我问了 IBM 同样的问题 官方是的 实际上 Jar Hell 会给你带来一些问题 如果我是你 我会花
  • 将 TabLayout 固定到工具栏 Scrollview 的顶部和下方

    我想在滚动时固定 TabLayout 我已经尝试过 代码 但无法将 TabLayout 固定在工具栏下方 在这个我有工具栏 下面有滚动视图 在滚动视图内我有很多布局 我想固定位于 ViewPager 上方 底部 的 TabLayout 当我
  • 在 postgres 中选择时保留顺序[重复]

    这个问题在这里已经有答案了 在 psql 中 至少在 v9 中 如果我这样做 select id from users where id in 2 1 1 and select id from users where id in 1 2 它
  • D3.js 中的点图

    我有兴趣创建一个Dot plot 每个数据值都有连续的点 但到目前为止我所管理的是为每个值创建一个点 更清楚地说 假设对于 array1 我希望第一个值创建 5 个圆圈 第二个值创建 4 个圆圈 依此类推 array1 5 4 2 0 3
  • 获取在电池电量降至 0% 之前我还有多少时间 Android

    我能知道电池电量降至 0 之前还有多少时间吗 使用的东西CountDownTimer并计算一下电池消耗了多少毫安时 有人可以帮我做吗 您无法准确猜测电池还剩多少时间放电 您只能做一些估计 您可以通过注册接收器进行操作 在广播接收器的帮助下获
  • matplotlib 中的背对背直方图

    有一个很好的函数可以绘制背靠背直方图 http www mathworks co uk matlabcentral fileexchange 23312在Matlab中 我需要在 matplotlib 中创建一个类似的图表 谁能展示一个有效
  • 在 IntelliJ 中设置 Glassfish 配置时出现“管理端口配置未找到”错误

    在 IntelliJ IDEA 中设置 Glassfish 时 我收到以下错误消息 未找到管理端口配置 现在我到处搜索 但没有找到可以设置管理端口的地方 搜索谷歌我发现的是JavaRanch 上的死链接 http www coderanch
  • 即使在签出到另一个分支后也无法删除本地分支

    我正在尝试删除我的本地分支并尝试了我在这里找到的大多数解决方案 即签出到另一个分支然后运行git branch D or d
  • 如何快速更改 SKSpriteNode 的颜色?

    我创建了一个游戏SKSpriteNode那是黑色的 当用户触摸屏幕时我想要SKSpriteNode更改为白色 我已经用谷歌搜索了一切 并尝试了很多不同的策略 但没有成功 有谁知道如何做到这一点 这是我的场景的代码 var blackBird