【问题标题】:Should I use Core Animation or SpriteKit/Cocos2D for simple, blinking 2D animation?我应该使用 Core Animation 还是 SpriteKit/Cocos2D 来制作简单的、闪烁的 2D 动画?
【发布时间】:2014-09-05 07:56:35
【问题描述】:

我需要有关如何为小型 2d 事物制作动画的指导,例如,一个只是保持闪烁的角色。 SpriteKitcocos2d 是否“太多”来实现这种事情?我不打算制作游戏,我只是想将标准 iOS 控件与执行上述简单动画的美术作品混合,但也许我需要在不久的将来制作更精细的动画(例如,角色正在运行) .我应该为此使用Core Animation 框架吗?或者也许是另一个更好的选择?

我会支持 iOS 7.0+

提前致谢

【问题讨论】:

  • 使用附近的东西。闪烁几乎不是动画,您只需在打开和关闭之间循环“隐藏”或“可见”属性。使用您提到的任何技术都可以轻松实现基于图像的动画。
  • 未来提示:避免在标题中使用“最佳方式”,因为它会引起懒得阅读问题的人的密切投票。
  • 同意 amphetamachine(在他看来和他的亲时间表麻醉品主题名称 ;-)) - 我在查看“投票结束”问题时发现了您的帖子。你的邀请了几个“基于意见”的近距离投票。我投票决定保持开放。会修改的。
  • @LearnCocos2D 我不同意。请参阅我的回答和我对 iZabala 回答的评论。基于计时器的隐藏/可见方法无法扩展,并且由于使用了计时器,因此对移动设备的要求非常高。使用 Core Animation 可以让系统决定是否需要牺牲帧速率来实现 UI 响应。如果你有“很多”(比你想象的要少)闪烁的元素,这就会增加。如果您开始使用不同频率的闪烁元素,则每个频率至少需要一个计时器。在这一点上,您正在重新发明 Core Animation 的粗略(和资源粗鲁)版本。

标签: ios animation cocos2d-iphone core-animation sprite-kit


【解决方案1】:

核心动画在这里是最好的,因为您特别希望使用户界面元素闪烁(而不是使用棋盘和精灵构建游戏)。使用 Core Animation 设置重复动画以更改其 alpha 值。

使用计时(如 Ease-In-Ease-Out)甚至可以添加“Mac sleep light”呼吸效果。与 iZabala 的(公认的功能性)方法相比,使用这种方法意味着您让系统决定该动画的每一帧是否可以在给定时刻运行。如果动画太忙而无法保持 UI 响应,Core Animation 将根据需要丢帧。

您还可以对动画进行分组(因此,如果您有一个“带有闪烁指示器的按钮库”,您可以在相同的动画组中以相同的时间运行它们,这样它们就不会彼此不同步,并且看起来像一棵闪闪发光的圣诞树)。

【讨论】:

    【解决方案2】:

    您可以使用 NSTimer 类每次 X 次调用一个函数。例如,如果你想让某物闪烁,你可以这样做:

    NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self
                                       selector: @selector(blink) userInfo: nil repeats: YES];
    
    -(void) blink { //supose that myObject is an UIView in this example
       if(myObject.hidden){ 
         myObject.hidden=NO;
    
       }
       else { 
         myObject.hidden=YES;
       }
    }
    

    您可以使用位置来移动、alpha 或透明度来淡出、淡入...使用对象的属性来做同样的事情。

    【讨论】:

    • 运行一堆计时器来隐藏/显示 UI 元素是不可能的,儿子。 ;-) 他们坚持被听到,系统是否“有点太忙”而无法处理所有问题。单身的。框架。与否,而使用系统的动画库对此进行了优化(它会根据需要丢帧以保持 UI 响应,如果它太忙等等)。
    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多