LayaFlash已经对众多常用的AS3开发框架类库做了支持,可以直接把这些AS3时代的成果直接用到开发H5游戏上来。
1.已支持的框架类库(点击框架名可下载)
2. 框架类库的使用
用到第三方框架类库的时候需要在LayaFlash中引入框架类库的源码,不能使用这些框架类库的swc文件。LayaFlash软件提供的Laya.swc也仅用于API的对比功能,不参与最终JS文件的编译工作。
框架类库的引入和在“AS3开发IDE”上使用“外部源代码”的方式导入项目方法一样。
FlashBuilder引入框架类库步骤:
FlashDevelop引入框架类库步骤:
3.LayaFlash版Starling渲染框架项目的创建
Layabox官方网站提供的Starling框架已按照LayaFlash的开发规则进行过兼容修改,可以直接用它进行HTML5项目开发。使用方法与官方发布的原版Starling完全一样。但是项目创建时对LayaFlash代码的调用还是有些差别,下面将对这部分进行示例说明:
我们先新建一个LayaFlash项目,将Layabox官方发布的Starling框架以外部源代码的方式引入项目。Main.as为项目入口文件类,代码如下:
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import game.GameStage; import starling.core.Starling; import starling.events.Event; //[IF-SCRIPT]import flash.display3D.Context3D; [SWF(width=960,height=640,backgroundColor="0x0",frameRate=60)] public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(flash.events.Event.ADDED_TO_STAGE, init); } private var _starling:Starling; private function init(e:flash.events.Event = null):void { removeEventListener(flash.events.Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; setWindowFullSize(); IFlash.setOrientationEx(1); //是否为横屏模式 IFlash.setBgcolor("#000000"); //背景色 IFlash.showInfo(true); //是否显示帧率 Starling.multitouchEnabled = false; //是否启用多点触摸 Starling.handleLostContext = true; //是否开启纹理丢失重提功能 _starling = new Starling(GameStage, stage, null, null, "auto", "auto"); //初始化Starling实例 _starling.simulateMultitouch = false; _starling.enableErrorChecking = false; _starling.showStatsAt("right", "top", 2); _starling.start(); Starling.current.stage.stageWidth = stage.stageWidth; Starling.current.stage.stageHeight = stage.stageHeight; _starling.addEventListener(starling.events.Event.ROOT_CREATED, startGame); } private function setWindowFullSize():void { var w:int = 0; var h:int = 0; __JS__('w = Laya.window.innerWidth;'); __JS__('h = Laya.window.innerHeight;'); if (w > 0) { IFlash.setSize(w, h); } } private function startGame(event:starling.events.Event):void { } } }
通常LayaFlash项目不开启WebGL,用到基于Stage3D底层编写的框架时需要引入Context3D类,LayaFlash根据项目入口文件的代码是否导入这个类,来决定是否启用WebGL。由于该类仅在编译JS时使用,所以需要采用宏编译的方法引入:
//[IF-SCRIPT]import flash.display3D.Context3D;
另外,常规的LayaFlash是直接使用IFlash.setSize()方法设置舞台尺寸,而Starling项目需要自定义一个方法(代码示例中的是setWindowFullSize方法),在该方法中使用LayaFlash特有的JS代码直译方法,通过Laya.window.innerWidth和Laya.window.innerHeight属性获得运行窗口尺寸,再使用IFlash.setSize()去设置。