已支持的AS3框架

发布时间:2015-10-29

  LayaFlash已经对众多常用的AS3开发框架类库做了支持,可以直接把这些AS3时代的成果直接用到开发H5游戏上来。


1.已支持的框架类库(点击框架名可下载)

MornUI开发框架

Starling渲染框架

Feathers界面框架

Greensock TweenLite动画类库

DragonBones骨骼动画

Box2D物理引擎


2. 框架类库的使用

  用到第三方框架类库的时候需要在LayaFlash中引入框架类库的源码,不能使用这些框架类库的swc文件。LayaFlash软件提供的Laya.swc也仅用于API的对比功能,不参与最终JS文件的编译工作。

框架类库的引入和在“AS3开发IDE”上使用“外部源代码”的方式导入项目方法一样。

FlashBuilder引入框架类库步骤:

1446108515979276.png

  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()去设置