作者:Charlie Sorrel
原文链接:JavaScript Hack Enables Flash on iPhone
翻译:Klaith
一位相当有才华的程序员成功地让 iPhone 能够运行利用 Adobe Flash 平台创建的交互应用。因其工作于 Safari 浏览器内,这一方法也不受到 App Store 独裁规则的限制。
软件名为“Gordon”,实际上它并不允许 Flash 本身在 iPhone 中运行。相反,Gordon 是一个由 Tobias Schneider 开发的,可以令浏览器播放、显示 .swf 文件(Shockwave Flash 文件的扩展名)的 JavaScript 运行环境。所谓的“运行环境”,指能够容纳代码在其中运行的软件集合,打个便于理解的比方,就好像家用游戏机的软件模拟器,它使你在 PC 上玩到游戏机的原生代码,如《超级马里奥世界》什么的。
这是否意味着 iPhone 现在支持 Flash 了?其实不然,你还不能访问含有 Flash 的任何站点,因为网站必须安装这一软件才能起作用。开发者需要为他们网站上的每一个 Flash 对象添加运行环境,尽管区区数行代码便可调用。
而且虽然所有人都能接触到该开源项目,但它仍然未能解决 Flash 最大的问题之一。这些 SWF 文件依旧过度占用 CPU,某个演示——一副虎的简单矢量绘图——将我桌面浏览器的 CPU 占用冲到了 100%。
尽管如此,这软件仍可能为一种新类型的交互打开大门,即含动画的移动设备用网站。许多网络开发人员依赖 Flash 来实现一些 HTML 难以轻松完成的东西,那些 Flash 应用却无法运行于 iPhone。虽然缺乏 Flash 支持已经成为对 iPhone 平台最顽固的批评,Apple 却没有丝毫改正的举措。Adobe 在十月份宣布了变通方案,将提供开发者把 Flash 应用转换为 iPhone 应用的途径,不过这也并非网络浏览器支持 Flash,而那些转换后的应用在发售前仍会受制于 Apple 的批准。
你可以前往 Gordon 的演示页面,亲眼看看它的实际效果,无论是 Mobile Safari、iPhone 或者任何桌面浏览器都行。在一台崭新的 iPod touch 上,动画运行良好。既然该运行环境能直接显示 SWF 文件,它应该对视频也有效。
我们会不会在 App Store 里见到通过这一手段让我们查看 Flash 内容的浏览器?可能性很小,因为 Apple 禁止一切运行解释语言的应用。
另外,命名项目时,Tobias 看上去不曾考虑过 google 它所需的搜索词:Flash Gordon,或者也许是个玩笑?
Gordon 演示(Paul Irish 提供空间)
Gordon 项目主页(Github/Tobias Schneider)
译者的话:对 JavaScript 了解实在有限,因此不指望阅读源代码来明白真正的工作原理。《连线》原文附图所示的那个演示,依托 gordon.js 和 Movie.js 两个 JS,成功加载了 flapple.swf 文件。我觉得这是一次非常有趣的尝试,你呢?


Nice hack, but makes no sense to business or average user.
Go HTML5!
Yeah, go HTML5!
html5,now loading………..
其实我们都很急。
唉,视频编码方式都还没解决……
我也很讨厌flash,的确超占用CPU,notebook风扇狂转,啥么机型都是。
一个果敢、睿智、艺术的教主怎么可能让这种东西在iphone上运行呢~
仅仅是一种过渡方案。
Flash占CPU并不是Flash的错,而是大多开发者不够专业造成的。
我觉得,苹果杜绝Flash也根本不是因为Flash本身的限制,而是Flash背后的ecosystem太强大,以至于可能会动摇教主的利益。想象一下Flash本身的独立特性和高度可移植性,Adobe完全可以凌驾于Apple的标准自己制定基于Flash终端的iPhone开发标准。