使用 Starling 开发一个基于stage3D的 2D应用

做了一段时间页游,到头来,还是发现单机game魅力无穷啊,于是打算用手头上的最新技术重写去年暑假做的哪款demo。
于是乎,找来了这款 Starling 框架。

Starling 是一款开源的框架,封装了Flash Player 11 的Molehill即 Stage3D. 使2D游戏也可以通过GPU进行渲染,提升游戏的运行性能。

先放上最近迷恋上的洗脑萌曲吧~ 化物语OP3 「白金ディスコ」

  • 直接进入主题:
    先做一个位图碎片的效果吧。

    首先是 Starling的入口
    [cc lang=”actionscript3″ nowrap=”false”]
    [SWF(width=”1024″,height=”768″,frameRate=”60″,backgroundColor=”0″)]
    public class HelloStarling extends Sprite
    {
    private var m_Starling:Starling;
    public function HelloStarling()
    {
    addEventListener(Event.ADDED_TO_STAGE,onAdded);
    }

    private function onAdded(e:Event):void
    {
    /**Starling入口,其构造函数为 入口类(init.as),根节点(stage) 后面的参数基本用不到**/
    m_Starling = new Starling(init,stage,null,null,Context3DRenderMode.AUTO);

    m_Starling.antiAliasing = 1; //抗锯齿 1-16 使用GPU对图形进行抗锯齿处理,不过2D图像效果不明显
    m_Starling.start(); //启动StarLing
    }
    }
    [/cc]

    之后是入口类 init
    [cc lang=”actionscript3″ nowrap=”false”]
    public class Game2 extends Sprite
    {
    private var aoiVector:Vector. = new Vector.(NUM_AOI,true); //Vector用来存储所有碎片的引用
    private const NUM_AOI : uint = 100; //设定一个碎片总数
    private var imageContainer:Sprite; //碎片的容器

    [Embed(source=”../sources/1.jpeg”)] //嵌入资源用作材质
    private static const aoi:Class;

    public function Game2()
    {
    addEventListener(Event.ADDED_TO_STAGE,onAdded);
    }

    private function onAdded(e:Event):void
    {
    var aois :Bitmap = new aoi(); //将嵌入的资源转换为Bitmap
    var texture :Texture = Texture.fromBitmap(aois); //将位图导入材质
    imageContainer = new Sprite();

    for(var i:int=0;i> 1; //居中
    //imageContainer.y = stage.stageHeight – imageContainer.height >> 1;
    addChild(imageContainer);
    //imageContainer.flatten(); //用于统一管理子对象的顶点着色器 可提高性能
    stage.addEventListener(Event.ENTER_FRAME,onEnter);
    }

    private function onEnter(e:Event):void
    {
    var len:uint = aoiVector.length;

    for(var i:int=0;i

    顺便放上一个粒子效果:

    不知道各位在一个页面 看 多个flash卡不卡,不过DreamFairy 表示毫无压力的说。
    由于Starling本身没有粒子支持库,所以该粒子效果是使用第三方插件的形式存在的。在 Github 上拖下来的demo运行起来会报 缓冲区错误。
    so~ DreamFairy 自己重写了这个demo, 由于比较偷懒的缘故,就写了一个效果。 原版demo是有 4 个效果的说。

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注