做了一段时间页游,到头来,还是发现单机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.
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
//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 个效果的说。