我在1月为HTML5 Canvas WebGL game创建了一个Mozilla Game On 2010 competition(很晚,我知道 - 直到昨天才发布它)。现在我想把它移植到Flash ActionScript 3.0进行大学任务。
我非常精通C / C ++和Java等静态语言;和动态语言,如Python和JavaScript。但是我不知道ActionScript,但因为它是ECMAScript的一个子集,所以应该很容易理解。
我想学习ActionScript 3.0中的编程,以便我可以在Flash中移植我的游戏。更具体地说,我想了解更多:
如果您能为我提供指向我可以了解更多相关主题的页面的链接,我将不胜感激。更直接的实践方法更可取。
如果您使用JavaScript检查我的源代码并为我提出解决此问题的最佳方法,那将会更有帮助。
我可以在main game engine找到game和Github repository本身的代码。
答案 0 :(得分:2)
ActionScript和JavaScript的核心非常相似。在某些方面,您可以将ActionScript视为更像是在ECMAScript之上分层的强大库。有一些差异(即ActionScript喜欢将自己视为基于类的oop,而JavaScript是基于原型的),但如果你对它感到满意,那么你应该对另一个非常放心。
ActionScript有一个基于类的继承系统并支持接口(但如果你愿意,你仍然可以做一些原型魔术,但不建议这样做)。它还支持强类型对象。
var object:MovieClip = new MovieClip();
这将强烈键入object
变量作为MovieClip
类的实例。
如果您的游戏非常耗费3D,那么您需要查看新的Flash 11 Stage3D和Context3D类。这些暴露了低级GPU加速API,在Flash 11无法实现之前。你可以使用Flash 10做有趣的3D内容,但是你通常使用的是drawTriangles(),它不是硬件加速的。 Flash 11目前处于测试阶段,但应该很快就会推出。 Flex SDK的测试版可以让你编译目标Flash 11播放器。
还有相当多的3D库构建在这些低级api之上。如果你为他们四处寻找,他们很容易找到。但我建议在深入了解3D库之前,先了解ActionScript的工作原理。
无论你使用Flash 11还是Flash 10,闪存中的HUD都很简单。对于“经典”闪存,你需要熟悉他们在flash中使用的display tree概念。只需确保显示顺序正确,并且您的HUD DisplayObject
始终位于渲染的“顶部”DisplayObject
对于Flash 11,StageVideo
和Stage3D
个对象直接位于舞台上方,但位于连接到舞台的所有普通闪光灯DisplayObjects
后面。因此,在这种情况下,我会让Stage3D
api处理所有重型渲染,并使用传统的显示堆栈来处理HUD元素。
您可能还想通过Flash CS5.5抓住自己Flash Builder。如果你是一个程序员(我假设你是在这里发布的那个),它不会让你的眼睛流血试图编码。 FB基于日食,它相当不错但不完美。但是如果你抓住自己的免费Flex SDK,并且不介意使用命令行,你可以开始编写swfs非常快速和便宜(也就是免费)。
另外,请查看FlashDevelop。我有一段时间没有使用它,因为它的内置分析器切换到FB,但它可能对你有用。
使用Flex SDK,Importing images and audio非常简单。
[Embed(source="logo.gif")]
public var LogoBitmapData:Class;
然后稍后实例化该类:
var bitmapData:BitmapData = (new LogoBitmapData()) as BitmapData;
然后在任何你想要的地方使用它。
关于Flex的说明。 Flex是一组构建在普通Flash API之上的UI库,Flex SDK包含用于编译MXML和ActionScript代码文件的库和工具。因此,尽管您应该使用Flex SDK来编译Flex应用程序,但您也可以使用它来编译直接的ActionScript代码。
就教程或参考资料而言,我没有任何真正的提供。我发现互联网上关于ActionScript编程的大部分信息都非常受欢迎(当你能找到一些不是由平面设计师编写的东西时)。我会在here中挖掘一下,看看你是否能找到对你有用的东西。
显然我可以了解更多这方面的东西,但希望这会让你朝着正确的方向发展。
答案 1 :(得分:1)
欢迎来到AS3:)
@ 32bitkit打败了我的IDE信息,但我绝对推荐使用Flash Builder。如果你要做任何真正的AS3工作,这是一个真正的工具并且物有所值。
就实际教程而言,Senocular因编写一些最佳内容而闻名。他有很多很棒的教程here,但以下两个是AS3特别优秀的入门教程:
如第二篇教程所示,基于AS3的项目将继承自flash.display.Sprite
类。您可以查看该here的文档。也许这听起来很愚蠢,但你只需浏览AS3 Reference docs就可以真实地了解AS3。 Adobe已经做得很好。
AS3需要注意的另一件事是如何处理事件。 This tutorial解释了EventDispatcher类如何作为事件管理的基础。您可以使用内置事件或发送自己的事件。
HTH!