2009-06-17 80 views
4

我为Leopard构建了一个利用核心动画的屏幕保护程序。它没有做任何过于复杂的事情;使用CALayers和CATextLayers的树,以产生数据的“表”中的结构如下:在屏幕保护程序中的生涩/ juttery(核心)动画?

- root 
    › maincontainer 
    › subcontainer 
     › row [multiple] 
     › cell [multiple] 
      › text layer 

在最有在任何一个时刻在屏幕上呈现50个CALayers。

一旦我建立了“表格”,我将使用CABasicAnimation将“subcontainer”动画添加到视图中。再一次,我没有做任何事情 - 只是一个简单的淡入。

问题是,虽然动画确实发生了痛苦的观看。在我的开发机器上,这是一款带有4GB内存的3.06Ghz iMac,它似乎将动画分成10个步骤,而不是逐步改变。

它在屏幕保护程序所针对的ppc mac-mini上变得更糟;它甚至拒绝播放动画,通常从动画开始(0%不透明度)到中途(50%)然后完成“补间”。

我对ObjectiveC相对比较陌生,我的经验基于使用垃圾收集环境,但我无法相信我在屏幕保护程序开始导致此类问题时泄漏了足够的内存。

此外,我很确定它没有硬件问题。我已经测试了使用核心动画的内置屏幕保护程序,并下载了一些免费的基于CA的对比,并且它们在两台机器上运行都没有问题。

Google上的信息非常简单,关于在屏保中使用CA或在一般情况下使用CA,关于分析/烦人屏保的建议/教程似乎并不存在。所以社区可以提供的任何帮助都会受到欢迎!

--- UPDATE ---

仿佛隐式动画帮出来打圆场了一点。仍然有点生涩,但不像尝试使用我的解决方案中的明确动画制作动画一样糟糕。

回答

1

屏幕保护程序没有太多特别之处。我假设你已经开始使用Core Animation Programming Guide?通过乐器运行它会给你很多关于你花费太多时间的信息。

你用来做淡入的代码会很有用。对于你所描述的,你甚至不需要CABasicAnimation;你可以设置图层的动画属性,默认为动画。确保你已阅读Implicit Animations。该页面的其余部分可能也有用。

CoreAnimation中的大部分工作已经开始。我一般都知道它在做什么,而大部分问题都来自于猜测它试图告诉它太多。

相关问题