- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在寻找的是使用 html5 的手机的 flash 替代品。
我正在研究 SVG,似乎获得硬件加速的唯一方法是在其上使用 CSS 转换。但是 CSS 变换还不够,我想对构成矢量的实际节点(即路径上的点)进行动画处理,以便获得更复杂的 Angular 色动画。为此,我正在查看一些基于 gui 的编辑器。
我检查了 adobe 一直在做什么,他们似乎已经杀死了 Edge Animate 并将 Flash 重新命名为 2016 年的“Animate CC”。
http://blogs.adobe.com/creativecloud/update-about-edge-tools-and-services/
https://blogs.adobe.com/flashpro/welcome-adobe-animate-cc-a-new-era-for-flash-professional/
但是在阅读“Animate CC”时,我发现它将矢量动画导出到 Canvas 或 WebGL。我认为这是因为他们没有通过 SMIL 或使用 javascript 获得原生 SVG 的硬件加速。
https://css-tricks.com/guide-svg-animations-smil/
另一个是http://www.animatron.com它也将所有内容都转换为 Canvas 。
所以我的问题是,为了在矢量路径中的节点上制作关键帧动画,需要将矢量转换为 WebGL 或 Canvas 以使其成为 硬件加速 在移动?
p.s 我更喜欢使用 SVG,因为它是在 DOM 中加载的,我可以使用 jquery 来操作。这是一款使用矢量(svg)作为基础的手机游戏,但我也想加入动画——除了基本的 css 转换。我希望有一种方法可以让 .svg 文件不仅包含矢量信息,还包含动画信息。所以我可以加载这个 .svg 文件。然后在javascript中去:
character1.play('animation1') 什么的。如果 SMIL 工作得很快,我相信像 adobe 这样的编辑器会让它变得如此简单。
编辑 :我刚刚读到 Chrome 45 杀死了 SMIL 以支持“网络动画”和 css。
https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animation_with_SMIL
正如 Kaiido 在评论中提到的 IE 从不支持 smil 所以也许这就是为什么 adobe 从未导出到它(?)。
http://caniuse.com/#feat=svg-smil
我也从未在网上看到任何使用 smil 显示硬件加速路径动画的示例,如果你们中的任何人找到链接,请告诉我。
编辑#2 : 我正在考虑放弃我的一厢情愿,转而关注像 animatron.com 这样的矢量到 Canvas 导出商。但是, Canvas 似乎不像 css3 转换那样是硬件加速或快速的。我在我的旧 iPhone 4s/iOS 8 中加载了一些来自 animatron 的动画,它很紧张而且很慢,例如:
https://www.animatron.com/project/1953f3526e5b2ec4eef429c8
而 css3 变换动画总是运行得非常流畅......
我还没有测试矢量到 webgl .. 但我认为这就是为什么 adobe 最终选择将它用于他们的矢量动画,因为 Canvas 很慢并且 svg 是有限的。
编辑#3 : 果然,似乎 webgl 是要走的路(除非有人找到用原生 svg 做到这一点的方法)http://www.yeahbutisitflash.com/?p=7231 .. 这在我的 iphone 4s/ios8 中运行得很快.. 我目前认为这是做我想做的唯一方法:基于硬件加速矢量的动画(但是图形看起来不像我想要的那样清晰..我认为 webgl 有点搞砸了)。
但这就是为什么我认为 Edge Animate 被杀的原因,因为他们试图创建一个利用 css3 变换的工具,但是人们想要动画矢量节点,所以他们回到 Flash 并重新命名它。 (另一个注意事项:上面的 webgl 动画在我的 Galaxy S4/kitkat android 手机上效果不佳。所以这主要适用于较新的设备/操作系统)
编辑#4 : 想想吧。在我的程序中运行多个 webgl 上下文会很痛苦。所以如果我有 10 个动画 Angular 色,我必须有 10 个 webgl 上下文,这对于移动设备来说会很紧张。除非我选择在 flash 中完成整个游戏,然后在导出后我会有一个大的 webgl 上下文它。但我更喜欢在dom工作。哦,同时css3转换..:/
编辑#5 - 2016 年 12 月 :我现在将 svg/javascript 与 snap.svg 一起使用。现代手机似乎足够快。
我发现的其他有用链接:
http://www.crmarsh.com/svg-performance/
最佳答案
Canvas 是(据我所知)软件加速。所以它是由处理器(CPU)渲染的。处理器(因为它们是像素)不太擅长图形处理,但对于简单的事情就足够了。它到处运行,只要有处理器。
如果你想在大多数现代智能手机的硬件加速设备上获得更好的性能,你需要 webgl。但是您可以从 adobe CC 将您的东西导出到 webgl 中。较旧的智能手机在硬件加速方面没有得到很好的优化,因此请与您的目标群体核实他们拥有哪些设备,并尝试在最慢的设备之一上运行您的应用程序。
我不会使用 SVG。 SVG 甚至比 DOM 还要糟糕。您可以比 SVG 更快地在 javascript 中操作 HTML。我不知道为什么,但它该死的慢。如果您想拥有可缩放的图形或图表,SVG 只是一种选择,而这正是它的用途。在 SVG 中制作动画是一种痛苦。不要这样做。它没有针对动画进行优化。
CSS-Transform 类似于原型(prototype),不会帮助您处理关键帧动画。但它有可能关注它。
这对你有帮助吗?
关于javascript - WebGL 或 Canvas 是获得 SVG 关键帧动画硬件加速的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866402/
我刚刚意识到二进制编译器会将源代码转换为目标平台的二进制文件。有点明显...但如果编译器以这种方式工作,那么同一个编译器如何用于不同的系统,如 x86、ARM、MIPS 等? 难道他们不应该“知道”硬
在我的 SDL 游戏中,出于游戏玩法和性能原因,我希望保留固定的游戏区域分辨率。 我想做的是有一个小分辨率(例如 320 * 240),并且在调整窗口大小时/切换到全屏模式时让 SDL/显卡缩放每个像
我正在使用这些方法来激活 SurFaceView 上的触摸焦点 private SurfaceView surfaceiew; private CameraSource camSource; priv
您好,当我从硬件菜单更改设备时,我遇到了这个奇怪的问题,但我想我可能遗漏了一些简单的东西。 我的 View Controller 中有这段代码: - (void)touchesBegan:(NSSet
编写一个名为 weird() 的函数,它将三个字符串作为参数并向后打印最长的一个。 (在平局的情况下,应该选择较早的参数字符串。 函数调用: weird("I", "Love", "Python")
您好,我正在尝试设置 hadoop 环境。简而言之,我要解决的问题涉及数十亿个大小为几 MB 的 XML 文件,使用 HIVE 从中提取相关信息,并对这些信息进行一些分析工作。我知道这在 hadoop
我知道 Phidgets,但是,我正在寻找可以与 C# 接口(interface)的一些其他类型的硬件。 谁有好东西? 最佳答案 查看 Netduino .它基于 Arduino,但使用 .Net
说一个函数(例如模乘法、正弦函数)是在硬件而不是软件中实现是什么意思? 最佳答案 在硬件中实现意味着电路(通过逻辑门等)可以执行操作。 例如,在 ALU 中,处理器在物理上能够将一个字节加到另一个字节
我需要编写一个程序,在可能状态的大空间中执行并行搜索,在此过程中发现了新区域(并开始了他们的探索),并且由于在其他地方获得的中间结果消除了可能性,因此提前终止了对某些区域的探索在其中发现新的有用结果。
我们需要通过带有硬件 token 的 EV 代码对 InstallShield 2013 Express 的安装进行签名,但是无法导出私钥证书文件,因此唯一的方法是使用 DigiCertUtil 工具
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 2 年前。 Improve this ques
我考虑从库中丢弃处理大端情况的代码,如果平台不是小端,则在初始化期间简单地抛出一个异常。如果我们限制为,我无法想象会有任何大端硬件 托管任何网站的典型服务器硬件 服务器根据开放计算项目规范 所有常见的
我知道这可以做到,但找不到交换目标调试设备的地方。我现在正在使用模拟器,但想切换到设备,反之亦然。谁能指出我正确的方向? 谢谢。 最佳答案 像这样.. 右键单击 PROJECT--->Run As--
我正在尝试创建一个监听音量键事件的服务。 每当按下音量键时,服务应向号码发送短信,但我无法检测到音量键事件。 最佳答案 您可以使用 OnKeyListener可以检测按键事件(包括音量键)。您可以找到
谁能解释一下中断如何从最低层(硬件)传递到应用程序。 所以在下图中我知道处理器之后发生了什么。 但是我想要从键盘按下到处理器的中断过程在硬件中发生了什么,例如它如何传递扫描代码,中断 Controll
我的任务是构建一个应用程序,其中业务用户将定义一些数据操作和处理规则(例如,取一个数值并将其平均分配给根据中指定的条件选择的多个记录)规则)。 每月必须运行一个批处理应用程序,以便根据定义的规则处理大
所以这是我的愚蠢问题: PGP/GPGP可以用来对文本进行签名,其他的使用公钥来验证。 比方说,非对称密码算法处理空间。 有没有什么算法可以处理时间? 例如在 2011-10-10 10:10:10
使用 nvcc 编译 CUDA 程序是否需要安装支持 CUDA 的显卡(在 Linux 中)?或者可以在任何地方编译程序并且只能在这样的系统上运行? 最佳答案 不,编译不需要显卡。 您甚至不需要一个来
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有一个奇怪的问题,但我对这个话题很感兴趣。 是否有可能直接访问当前基于 x64 的计算机的硬件,而无需使用某种 HAL(硬件抽象层)或其他操作系统(udev、upower 等)的附属物?我不是在谈论
我是一名优秀的程序员,十分优秀!