LayaBox flash 转换项目心得

阅读更多
一、熟悉从as3项目转到js的API和特性差异
1、SimpleButton类不能动态修改各个状态的外观
2、ByteArray类,不能使用[]语法获取和设置指定位上的数据,需要改用 byteAt和byteSet取代对应的获取和设置方式
3、Dictionary类,在使用[]语法获取和设置时,如果key值的类型为对象或复杂类型,都需要使用DIC和DICKEY取代原有的设置和和获取方式,hasOwnProperty()方法替换为if判断方式
4、XML类,在使用lenght()方法获取子节点长度的时候,需要替换成xmlLength()方法。如果用到连续获取下级子节点的情况,需要判断上层节点是否为null。子节点的节点名不能使用layaBox的限定字。属性值为数字的时候,使用时需要强制转换。
5、使用非本类的对象的方法引用作为参数时,需要使用bind()方法绑定作用域
6、项目入口添加
IFlash.setSize(),设置项目宽高
IFlash.regBeforeInit(),转换项目初始化前需要的操作,可以处理一些用到表达式赋值的静态属性的首次调用
IFlash. setOrientationEx(),设置项目是横屏还是竖屏
7、用到表达式赋值的静态属性需要调用一次后才能正常得到值
8、使用Loader类的loadBytes方法加载图片二进制数据的地方需要改成URLLoader加载
9、导入其他js库文件的方式,importJS("xx.js", null)

二、转换的大致步骤
1、没有错误或者警告,运行flash版本
2、整体修改一遍字典相关的代码,全文搜索:Dictionary,然后使用flashBuilder的调用堆栈逐个检查
3、如有时间,统一修改一遍函数作用于绑定相关的代码,全文搜索function(,然后使用flashBuilder的调用堆栈逐个检查
4、转换成js,在浏览器中运行,开始js调试
5、在as3中调试,对比js的代码的问题做出修改
6、重复步骤4

三、转换时使用的宏编译
1、只在as3中运行的代码行,/*[IF-FLASH]*/
2、只在js中运行的代码行,//[IF-JS]或者//[IF-SCRIPT]
3、只在as3中运行的代码块,/*[IF-FLASH-BEGIN]*/.../*[IF-FLASH-END]*/
4、只在js中运行的代码块,/*[IF-SCRIPT-BEGIN]...[IF-SCRIPT-END]*/

四、转换经验(其余还在总结中)
1、swtich...case的条件如果用到整数,一般需要强制转换一下
2、使用__JS__(...)的时候,里面如果是引用文件,记得加包路径,不然遇到有两个相同类名的时候就跪了(张聪聪增补)
3、遇到as类型检查时,需要看是否为连续使用,例如:(a as B).c,这种情况需要拆开写
4、修改过的地方加上一定规律的注释作为标记,方便查找增补、修改的内容及后续跟进
5、在使用LoaderInfo对象作为字典key时会出现取不出值的问题,需改用LoaderInfo对象对应的Loader对象作为key,可以解决这个问题
6、使用in语法判断字典中是否存在某个属性的时候(xx in a)需要改用普通的判断条件 a[DICKEY(xx)] != null
7、查找字典语法的改写阶段,遇到不明类型的情况,可以写一个判断,如果对象是Object,输出一个信息,提示这里需要使用DIC/DICKEY改写,在后期随见随改

你可能感兴趣的:(layabox,flash,h5)