【问题标题】:How can I modify a screensaver (.saver)?如何修改屏幕保护程序 (.saver)?
【发布时间】:2013-08-29 00:27:40
【问题描述】:

我的目标是能够修改开发人员不再支持的 Matrix 屏幕保护程序。我只是希望能够将字形的颜色从 green 更改为 red。根据我的阅读,我可能需要编辑编译的.nib 文件。据推测,有一些技巧可以做到这一点。

我在.saver 文件中看到的唯一文件是:

  • Unix 可执行文件
  • InfoPlist.strings
  • Matrix.nib
  • 一个 Glyphs.png(它是灰度的,所以颜色效果必须来自编程)
  • Matrix.nib 文件位于名为 Japanese.lproj 的文件夹中

我没有看到任何其他可以编辑的文件可以让我实现这一目标,因此我正在寻找一些指导。

编辑:作者在他的github 上发布了他的屏幕保护程序的源代码。现在我只是想弄清楚到底需要改变什么。

【问题讨论】:

标签: xcode opengl nib screensaver


【解决方案1】:

源代码的修改并不难。颜色是动态计算的,因此无法修改资源来更改颜色。

在 MatrixStrip.m 的第 226 行中,将左括号前的 1 更改为 0。在第 228 行中,将 0 更改为 1。代码中 V 下方的列。

....                            V
226:    colorArray[16*i + 4*c + 0] = (cellState[i] == 0) ? 0.0 : g;
227:    // Cells which are very bright are slightly whitened
228:    colorArray[16*i + 4*c + 1] = ((g > 0.7) && (cellState[i] != 0)) ? (g - 0.6) : 0.0;

对第 253 行和第 255 行进行相同的更改。您将第 34 列中的数字按顺序放入内部循环中。在原始代码中,向下读取第 34 列的数字 a 1、0、2、3。这必须在我指出的 4 行的两个内部循环中完成。这些数字是 RGBA 颜色的索引。

我不确定我的解释是否充分,因此我不会将其扩展到 1000 个单词,而是将包含差异的屏幕截图,其中相关部​​分由 Kaleidoscope 突出显示。原始代码在左侧。

我必须下载图片才能查看相关详细信息。

【讨论】:

  • 谢谢,实际上我马上就知道了。但现在的问题是,当我构建它并对其进行测试时,我现在得到的是红色块而不是像它应该的那样的字形。而且我不知道是什么原因造成的。我唯一的猜测是这是我在 xCode 中构建项目的方式。
  • 这是您所做的唯一更改吗?当我测试我发布的内容时,它运行良好。事实上,我现在有紫色字形。 console.app 中有什么东西吗?有一些很好的日志记录函数被调用了很多。您可以使用 Xcode 来验证是否只进行了这四项更改并恢复其他任何内容。我正在运行未修改的项目和 nib 文件。
  • 我确定我搞砸了(典型的我)。可能没有以正确的方式导出保护程序文件。我必须进入调试文件夹才能找到 .saver 文件。不确定这是否是正确的做法。
  • 您只需将保护程序文件复制到“~/Library/Screen Savers”并重新启动系统偏好设置。这可能不是你的错。可能是显卡。我在配备 27" Thunderbolt 显示屏的 15" MacBook Pro Retina 上运行。另外,您是否在进行任何修改以验证其实际运行正确之前运行了它?
  • 废话!我所要做的就是重新启动系统偏好设置。哇,这大约浪费了一个小时。哈哈。感谢所有的帮助。
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2020-11-29
相关资源
最近更新 更多