




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- -Flash/stage3D到HTML5/WebGL的无损转换机制的实现(全文)XXTP39XXAXX1674-6708(2021)102-0199-020引言XX络3D化是当前互联XX发展的一个新趋势,尤其是近几年来移动互联XX的迅猛发展,推动了Web3D技术的革新。当前,在XX络上最流行和最被广泛使用的3D技术是Flash3D技术。XX上有很多流行的基于Flash的3D引擎,既有商用非开源的,也有免费开源的,没有统一的标准。随着XX络3D的发展flash适时地推出了新的3D技术Stage3DStage3D不仅采用了最新的渲染技术可编程渲染管线,而且支持GPU硬件加速技术。然而,Stag
2、e3D依然无法改变插件化这个事实。HTML5的出现,让XX络3D去插件化得以实现。基于HTML5的WebGL技术,真正做到了无插件,只需浏览器,就可以展示3D模型,甚至是运行大型3D在线游戏。WebGL有望取代Flash的Web3D霸主地位成为新一代的Web3D标准。1WebGL的优势WebGL是一项新兴的Web前端技术,它是OpenGL和JavaScript的组合在HTML5的canvas标签上绘制和渲染3D模型。WebGL最大的优势在于它无需插件,依靠浏览器,就能够虚拟出三维世界。WebGL是开源免费的,并且是跨平台,在开源社区的大力支持下,WebGL充满着活力。WebGL是Web上的Op
3、enGL,支持GPU硬件加速技术和可编程Shader,能够高效轻松地渲染和展示3D高级特效。WebGL使用HTML5的canvas标签作为内容的展示舞台,能够方便地嵌入XX页,实现了逻辑和UI的剥离。2无损转换器的设计与实现Flash/Stage3D的编程实现语言是ActionScript3.0语言,而HTML5/WebGL的编程实现语言是JavaScript语言。这两种编程语言都是基于ECMAScript的编程语言。ECMAScript是种ECMA-262标准化的脚本程序设计语言,在万维XX上被广泛使用。因而,ActionScript3.0和JavaScript是同宗同源的,ActionSc
4、ript30翻译转换成JavaScript是完全可行的。图1是本转换器的基本架构图。2.1文法分析2.2LL(1)分析器我们采用自上而下的语法分析方法,对任何输入串,试图用切可能的方法,从文法开始符号出发,自上而下地为输入串建立颗语法树。LL(1)分析器的核心成员将包含产生式,扫描器,终结符,非终结符。个标准的BNF产生式,其形式如:rule:=expression,其中rule为产生式的名称,而expression则是这个产生式的具体表现Rule表示产生式的名称,Expression中存储着具体表现的所有单词。终结符是任意单词串(即不包含空格的)的集合,在一个文法中,终结符只可能出现在任意产
5、生式的右侧,即Expression中。而非终结符为所有在文法产生式左边出现的符号,即所有的可能的Rule。在分析过程中,若遇到非终结符,则意味着将进行新的规约。扫描器为特殊的产生式,它的Rule必定是一个终结符,而它的Expression则为一个正则表达式。扫描器的作用则是当分析器在规约到一个终结符时,为了判断这个字符串是否匹配,那么通过扫描器就可以完成,任意字符串都会通过正则表达式来判断是否匹配。通过LL(1)分析器的分析,将产生三个符号集合:First集合、Follow集合、Select集合。First集合是任意一个记号最后代表的串中可能在第一个出现的终结符或者是空串。Follow集合是为
6、任意一个记号最后代表的串之后第一个出现的可能的终结符,或者是开始符号。Select集合是一个表格,用来在任意符号遇到任意终结符的时选择不同的产生式。这些符号将在接下来的上下文处理中得到进一步的分析处理,为最终的翻译映射做铺垫。2.3上下文相关分析在文法构造过程,ActionScript3.0的文法包括包文法、类文法、块文法3种。这里的上下文处理指的就是ActionScript3.0文件结构的上下文,我们设计了一个类ASContext来表示这个上下文。ASContext有四个主要的属性:Imports、Predefs、Currentclass、CurrentFunc。其中,Imports用来保存
7、当前正在分析的Import引用,Predefs用来保存当前分析的预定义,CurrentClass表示当前正在分析的类,而CurrentFunc表示当前正在分析的方法。上下文相关处理的具体分析如下:在文件块中,若遇到包块文法的开始,ASContext记录下包块的信息。若遇到包外类的定义,则将CurrentClass设置为此外部类,同时将包外类加入包外类的集合。同时,将所有的Imports和Predefs保存到CurrentClass并清空这两个集合。在包块中,若遇到类定义,则将CurrentClass定义为此类,并将包内类设置为此类。同时,将所有的Imports和Predefs保存到当前类,并清
8、空这两个集合。在上述两者中,若遇到引用和预定义,则在Imports和Predefs中加入匹配得到的引用和预定义。在类块中,遇到任意方法定义,则根据前方的限定修饰符将方法的公开性设置,设置方法同属性定义。而静态方法的处理方式也与属性一样。只是此时将CurrentFunc设置为当前函数,可以将所有的函数内定义变量进行处理。由于函数内变量的提升,在进行块级分析的时候,会将读到所有的变量定义加入一个特殊的序列,此序列存储当前函数的所有临时变量。其他的语句则会被按正常序列加入当前的函数。当分析完成后,上下文对象ASContext保存了一个ActionScript3.0文件的所用信息了。接下来就要进行真正
9、的映射翻译,得到目标代码的中间代码。2.4映射翻译由于ActionScript3.0语言是面向对象(OO)的语言,而JavaScript是解释型语言,非OO语言。然而JavaScript是函数型语言,简单的说,它的函数即可作为对象来使用,像Java语言一样,它的根对象是Object对象,所有的对象都继承自Object。所以JavaScript完全可以模拟面向对象。Flash程序需要用到Stage3D库,然而由于Stage3D库是采用自然语言编写的,本转换器无法转换。我们必须对Stage3D库进行对应的JavaScript面向对象模拟化实现。最后,将中间代码生成目标代码。至此,ActionScript3.0语言就被成功翻译成了JavaScript语言了。4结论与展望本论文设计实现了将一门高级语言翻译成另一门高级语言的计算机语言转换器。本转换器已经实现基本的转换功能,然而要将Flash项目完整地转换成WebGL项目,目前还无法成功做到。并且,由于flash内置函数库过于庞大,因而翻译的JavaScript文件通常会遇到一些Ja
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东华宇工学院《普通生物学动物部分》2023-2024学年第二学期期末试卷
- 山东华宇工学院《城市公交规划与运营管理》2023-2024学年第二学期期末试卷
- 新星职业技术学院《燃烧学》2023-2024学年第二学期期末试卷
- 江西科技职业学院《磁性材料与器件》2023-2024学年第二学期期末试卷
- 南京交通职业技术学院《城市能源系统》2023-2024学年第二学期期末试卷
- 南通师范高等专科学校《遥感概论实验》2023-2024学年第一学期期末试卷
- 山东省兰陵县重点达标名校2025届中考模拟最后十套:化学试题(三)考前提分仿真卷含解析
- 公司计件工资劳动合同书
- 二零二五抖音发布协议书模板
- 二零二五版月子中心月嫂服务合同书
- 五年级下册数学课件 -4.1 用数对确定位置 ︳青岛版 (共20张PPT)
- 柏拉图分析案例
- 岩棉项目申报书_参考模板
- 二衬带模注浆施工方案
- 施工组织设计方案交底记录
- 《英语委婉语与忌语》PPT课件.ppt
- ISO9001-14001-2015内部审核检查表
- 风险和机遇应对措施有效性评审记录表副本
- 调查问卷设计-课件PPT
- 照金参观学习心得
- 井下电缆着火应急演练预案
评论
0/150
提交评论