1

我已经开发了一个游戏的 Canvas 原型(有点),即使我在桌面浏览器中以 30 FPS 的速度运行它,iOS 设备上的性能并不是我所希望的(很多不可避免的像素级操作在嵌套的 x/y 循环,已尽可能优化)。

所以,我必须将它转换为一个主要是原生的 ObjC 应用程序。我不了解 ObjC 或 Cocoa Touch,但有扎实的通用 C 背景知识。现在,我想我有两个选择 - 任何人都可以推荐其中一个以及它们是否可能?

1) 将原型放入 UIWebView,只需在 C 中进行像素缓冲区填充循环。我可以将指向生活在 Web 视图中的 Canvas 像素数组的指针“放入 C”中,我是否可以写入它?

2)让它全部原生。这里需要注意的是,我也使用了很多 2D 绘图函数(bezierCurveTo 等),我不想重新编码这些函数,也不想找到绘图库。那么,iOS 中是否有兼容 Canvas 的绘图 API 可以在 Web 视图之外工作?

4

2 回答 2

0

将原型放入 UIWebView,只需在 C 中进行像素缓冲区填充循环

不。然后只需将 Web 视图嵌入到您的应用程序中并继续使用 JavaScript 进行编码。它已经 JITted,所以你不必担心性能。

我可以得到一个指向生活在 Web 视图中的 Canvas 像素数组的指针“到 C 中”吗

不,不是直接的。如果你是一个铁杆组装黑客和逆向工程师,那么你也许可以通过查看内存布局和调用堆栈来完成UIWebView绘图到画布,但这只是胡说八道。

我可以写信给它吗?

一旦你按照自己的方式编程,我相信你会的。

让一切都是原生的。

如果你愿意...

这里需要注意的是,我也使用了很多 2D 绘图函数(bezierCurveTo 等),我不想重新编码这些函数,也不想找到绘图库。

您不必执行其中任何一项,而是只需阅读名为CoreGraphics的uber awsum graphix libz的文档。默认情况下,它随 iOS(以及 OS X)一起提供。

那么,iOS 中是否有兼容 Canvas 的绘图 API 可以在 Web 视图之外工作?

不,我不知道一个。

于 2013-07-05T18:11:18.603 回答
-1

将您的目标 c 代码翻译成 html5 听起来像是一项艰巨的任务,那么您不必更改 JavaScript 代码的第三个选项怎么样?

http://impactjs.com/ejecta

Ejecta 就像没有浏览器的浏览器。它专为游戏和动画制作。它没有 DIV、没有表格、没有表格——只有 Canvas 和 Audio 元素。这种专注使它很快。

是的,它是开源的

https://github.com/phoboslab/Ejecta

于 2014-04-14T03:25:16.330 回答