gpt4 book ai didi

iphone - iOS逐帧动画,按脚本

转载 作者:可可西里 更新时间:2023-11-01 06:12:40 28 4
gpt4 key购买 nike

关于逐帧动画有一些SO问题(例如frame by frame animation和其他类似问题),但是我觉得我的观点有所不同,因此请继续。

这部分是来自iOS经验很少的人提出的设计问题。

我不确定“逐帧”是我想要做什么的正确描述,所以让我来描述一下。基本上,我有一个动画电影的“脚本”,我想播放此脚本。
该脚本是一个json文件,它描述了一组场景。在每个场景中,都有一些元素,例如背景图像,演员列表及其位置和背景声音剪辑。此外,对于每个演员和背景,都有一个表示它的图像文件。 (这有点复杂-每个演员都有一个“行为”,如眨眼,讲话方式等)。因此,我的工作是遵循给定脚本引用演员和背景,并在每一帧中将演员放置在指定位置,绘制正确的背景并播放声音文件。
类似于youtube的电影播放器​​功能,电影可以暂停,前进或后退。
我所看到的大多数有关逐帧动画的问题都与我有不同的要求(我将在后面列出更多要求)。他们通常建议使用UIImageView的animationImages属性。这对于设置按钮或复选框的动画效果很好,但是它们都假定需要播放一小段预定义的图像。
如果要使用animationImages,则必须预先创建所有图像,而我的纯粹猜测是它不会缩放(想想一分钟约30 fps,您将获得60 * 30 = 1800图像。在这种情况下,磨砂和暂停/播放功能似乎很有挑战性)。

因此,我正在寻找正确的方法来做到这一点。我的直觉是,我可能会通过三种或四种主要方法来实现这一目标,而我在此过程中学到的更多。

  • 通过使用Core Animations并定义“关键点”并为这些关键点设置动画过渡。例如,如果一个演员需要在时间t1到达A点,在时间t2到达B点,那么我所要做的就是使它们之间的动画。过去,我在ActionScript中做过类似的事情,这很好,但是在执行scrub动作并使所有内容保持同步方面特别具有挑战性,因此我不喜欢这种方法。想象一下,您必须在动画的中间实现暂停或将其拖到动画的中间。可行但不愉快。
  • 设置一个计时器,例如说每秒30次,每次滴答时都要咨询模型(模型是脚本json文件以及演员和背景的描述),并绘制此时需要绘制的内容。使用Quartz 2D的API和drawRect。这可能是简单的方法,但是我没有足够的经验来说明它在不同设备上的运行情况,也许是在CPU方面,这完全取决于我需要在每个刻度上进行的计算量以及iOS绘制所有内容所需的努力。我没有预感。
  • 与2相似,但是使用OpenGL绘制。我更喜欢2 b / c,API比较容易,但是资源明智的OpenGL更合适。
  • 使用像cocos2d这样的游戏框架,我之前从未使用过,但似乎正在解决或多或少的类似问题。他们似乎有一个不错的API,所以如果我能找到他们回答的所有要求,我会很高兴。

  • 在我刚刚描述的要求之上(鉴于电影的“脚本”文件以及演员,背景和声音的描述,播放一部电影),还有另一组要求-
  • 影片需要以全屏模式或部分屏幕模式(屏幕的其余部分专用于其他控件)播放
  • 我从iphone开始,自然应该跟随ipad。
  • 我希望能够为本地电话创建此电影的缩略图(在我的应用程序的库中显示)。缩略图可能只是电影的第一帧。
  • 我希望能够将结果“导出”为电影,并且可以轻松将其上传到youtube或facebook。

  • 因此,这里最大的问题是,我想到的任何建议的1-4实现(或您可能会建议的其他实现)是否都能以某种方式导出此类电影。
    如果所有四个都未能完成影片导出任务,那么我会考虑其他选择。替代方法是使用运行ffmpeg的服务器,该服务器接受一捆所有的电影图像(我必须将它们绘制在电话中,并按其顺序将其上传到服务器),然后服务器将编译所有图像配乐到一部电影。
    显然,为了简化起见,我宁愿不使用服务器,即能够从iphone导出电影,但是如果要求太多,那么最后的要求是至少能够导出所有内容。图片(电影中的关键帧),因此我可以将它们捆绑并上传到服务器。

    电影的长度应该是一到两分钟。我希望这个问题不会太长,而且很清楚...

    谢谢!

    最佳答案

    写得很好的问题。对于您的视频导出需求,请查看AVFoundation(自iOS 4起可用)。如果要实现此目的,请尝试#1或#4。我认为#1可能是最快尝试的方法,但这可能是因为我对cocos2d没有任何经验。我认为您将能够暂停和清理CoreAnimation:查看它采用的CAMediaTiming协议。

    关于iphone - iOS逐帧动画,按脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960458/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com