首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTML5画布WebGL游戏移植到Flash ActionScript 3.0

将HTML5画布WebGL游戏移植到Flash ActionScript 3.0
EN

Stack Overflow用户
提问于 2011-09-23 17:28:51
回答 2查看 1.8K关注 0票数 1

我在一月份为莫兹拉2010年比赛创建了一个莫兹拉2010年比赛(我知道很晚了--直到昨天我才发布)。现在,我想把它移植到FlashWeb3.0上大学作业。

我精通C/C++和Java等静态语言,以及动态语言(如)。然而,我不知道ActionScript,但是由于它是ECMAScript的一个子集,所以应该很容易理解。

我想学习在ActionScript 3.0编程,以便我可以移植我的游戏在闪存。具体来说,我想知道更多关于:

  • ActionScript与浏览器和服务器端JavaScript有何不同?
  • OpenGL编程在ActionScript (包括加载纹理,着色器等)。
  • 如何使用像API这样的2D HTML5画布在Flash中创建一个HUD (在我的游戏中,我有两个画布,一个用于3D游戏,另一个用于头部向上显示)。
  • 支持ActionScript中的矢量和矩阵计算。
  • 如何在Flash中加载音频和精灵之类的资产。

如果您能为我提供一个链接到一个页面,我可以从那里了解更多关于这些主题的信息,我将不胜感激。最好是采用更直接的亲自动手方式。

如果您在JavaScript中检查我的源代码,并为我提出解决这个问题的最佳方法,那就更有帮助了。

主游戏引擎游戏本身的代码可以在我的Github储存库中找到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 18:07:52

ActionScript和JavaScript的核心是非常相似的。在某些方面,您可以认为ActionScript更像是一个在ECMAScript之上分层的健壮库。有几个不同之处(即ActionScript喜欢把自己看作一个基于类的oop,因为JavaScript是基于原型的),但是如果您对其中一个感到舒服,那么您应该对另一个感到非常自在。

ActionScript有一个基于类的继承系统,并支持接口(但如果您愿意,仍然可以执行一些原型魔术,但不建议这样做)。它还支持强类型对象.

代码语言:javascript
复制
var object:MovieClip = new MovieClip();

这将强烈地将object变量键入为MovieClip类的实例。

如果你的游戏是非常3D密集,那么你会想看看新的Flash11 Stage3DContext3D类。这些公开了一个低级别的GPU加速API,在Flash 11之前是不可能的。你可以用Flash10做一些有趣的3D事情,但是你通常使用的是drawTriangles(),它没有硬件加速。Flash 11目前处于测试版,但很快就会发布。Flex的测试版允许您针对Flash11Player进行编译。

还有很多3D库是建立在这些底层api之上的。如果你盯着他们看,他们很容易找到。但是,我建议在深入研究3D库之前,对ActionScript的工作原理有一个扎实的了解。

flash中的HUD功能很简单,不管你是使用flash 11还是flash 10,对于“经典的”闪存,你会想要熟悉它们在闪存中使用的显示树概念。只要确保显示顺序是正确的,那么您的HUD DisplayObject将始终是呈现DisplayObject的“顶部”。

对于Flash11,StageVideoStage3D对象直接位于舞台上方,但位于所有附加在舞台上的普通Flash DisplayObjects后面。因此,在这种情况下,我将让Stage3D api处理所有繁重的渲染工作,并为您的HUD元素使用传统的显示堆栈。

您可能还想通过FlashCS5.5获取自己的Flash生成器。如果你是一个程序员(我假设你是,因为你在这里张贴),它不会让你的眼睛流血,试图编码。FB是以eclipse为基础的,它非常体面,但并不完美。但是,如果您获得了免费的Flex,并且不介意使用命令行,那么您就可以开始编译swfs,而且非常快速和廉价(也可以免费)。

另外,查看FlashDevelop。我已经有一段时间没有使用它了,因为它的内置分析器切换到FB,但它可能是有用的。

导入图像和音频对于Flex来说是非常直接的。

代码语言:javascript
复制
[Embed(source="logo.gif")]
public var LogoBitmapData:Class;

然后再实例化类:

代码语言:javascript
复制
 var bitmapData:BitmapData = (new LogoBitmapData()) as BitmapData;

然后在任何时候你想用的地方都用。

只是一个关于Flex的笔记。Flex是构建在普通Flash之上的一组UI库,Flex包含编译MXML和ActionScript代码文件的库和工具。因此,尽管听起来应该使用Flex来编译Flex应用程序,但是您也可以使用它来编译直接的ActionScript代码。

有为Vector3DMatrix3D构建的类。

至于教程或参考资料,我没有任何真正的提供。我发现互联网上大多数关于ActionScript编程的信息都是偶然的(当你发现一些不是图形设计师写的东西的时候)。我会在这里里翻一番,看看你是否能找到对你有意义的东西。

很明显,关于这件事,我可以做更多的事情,但希望这能给你一个正确的方向。

票数 2
EN

Stack Overflow用户

发布于 2011-09-23 18:30:42

欢迎来到AS3 :)

@32 32bitkit比我快到IDE信息,但我绝对推荐Flash。这是一个真正的工具,如果你要做任何真正的AS3工作的话,这是值得的。

就实际教程而言,森诺尔以编写一些最好的内容而闻名。他有许多很棒的教程这里,但以下两篇是AS3的特别优秀的入门教程:

  • AS3在Flash CS3中的介绍本教程很好,因为它解释了AS2 (非常类似JavaScript)和AS3之间的区别。忽略这样一个事实,即它基于使用Flash“IDE”。
  • 这个AS3入门无学习Flex很有用,因为它提供了更多关于语言本身的介绍,而没有使用IDE或Flex框架的所有标记。它将帮助你理解语言本身。

如第二个教程所示,一个基于AS3的项目将继承自flash.display.Sprite类。您可以查看该这里的文档。也许这听起来很傻,但通过浏览AS3,您可以真正地了解到很多关于AS3参考文档的知识。Adobe在这些方面做得很好。

在AS3中需要注意的另一件事是如何处理事件。本教程解释了EventDispatcher类如何作为事件管理的基础。您可以使用内置事件或分派您自己的事件。

哈哈!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7532725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档