摸索Flash移动开发--导入Starling

本文介绍如何使用Starling框架开发移动游戏。Starling是基于ActionScript的显卡加速框架,适用于Flash游戏开发。文章通过创建一个简单的Starling项目,演示了如何设置游戏主入口、初始化Starling及添加文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总所周知,使用传统的Flash显示列表在移动元件上面开发游戏的话,会有些勉强。

得益于Adobe公司的危机感,去年Action Script(Flash的脚本语言)开始支持显卡加速,没记错的话应该是Flash Player 10.4吧。现在as的显卡加速的框架就有很多:starling, ND2d,away3d (3d版,已经和Adobe合作)等等。

出名的愤怒的小鸟使用的正是我们这节要开始学习的Starling框架。

上一节我们导入了starling的swc文件,所以我们可以在这里使用了。

首先我们要创建一个Starling的主入口,要继承Starling的显示类。如下:

package com.ado.mobile0 
{
    import starling.display.Sprite;
    import starling.events.Event;
    import starling.text.TextField;
    /**
     * ...
     * @author Long.J.Du
     */
    public class GameMain extends Sprite 
    {
        
        public function GameMain() 
        {
            super();
            this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }
        private function onAdded(e:Event):void
        {
            this.removeEventListener(Event.ADDED_TO_STAGE, onAdded);
       trace("Starling initialized...");
        }
        
    }

}

 

由于Starling是模仿的Flash的显示列表的架构,所以可以根据自己学习ActionScript的经验写代码。

 

写好了上面的游戏入口之后,我们需要在项目主类上面写一点东西。

首先是要把之前写的Hello, Mobile删掉。

然后在onAdded函数里面新建一个starling的实例,

实例的构造函数第一个参数是游戏主类类名,也就是上面新建的GameMain,第二个函数是舞台,this.stage即可,第三个是viewport,也就是显卡视窗,我们可以在监听舞台尺寸变化的时候将这个修改到对应的尺寸,后面几个一个是stage3d,可以通过Stage3D申请到Context3D之后传给他,不过这种活还是留给Starling帮你完成吧。

初始化starling之后,我们需要在主文件里面增加帧事件监听器用来做给starling做渲染,里面只需要调用starling的render方法就可以了。如下:

package com.ado.mobile0
{
    import flash.desktop.NativeApplication;
    import flash.events.Event;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.text.TextField;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;
    import starling.core.Starling;
    
    /**
     * ...
     * @author Long.J.Du
     */
    public class Main extends Sprite 
    {
        private var star:Starling;
        public function Main():void 
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.addEventListener(Event.DEACTIVATE, deactivate);
            this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
            // touch or gesture?
            Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
            
            // entry point
            
            // new to AIR? please read *carefully* the readme.txt files!
            
        }
        private function onAdded(e:Event):void
        {
            this.removeEventListener(Event.ADDED_TO_STAGE, onAdded);
            
            star = new Starling(GameMain, this.stage);
            
            this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        private function onEnterFrame(e:Event):void
        {
            star.render();
        }
        private function deactivate(e:Event):void 
        {
            // auto-close
            NativeApplication.nativeApplication.exit();
        }
        
    }
    
}

 

为了让程序看起来更直观的知道starling在干嘛,我们还是来一次hello starling吧。

在starling的主类中添加一个Starling的textfield吧。Starling的TextField和Action Script原生态的TextField用法差不多。

如下:

var text:TextField = new TextField(100, 30, "Hello Starling", "Arial", 14);
            addChild(text);
            text.color = 0xff1111;
            text.x = this.stage.stageWidth - text.width >> 1;
            text.y = this.stage.stageHeight - text.height >> 1;

 

添加完如下代码,然后点击调试你就可以看到以下结果。

好的,如果你顺顺利利的走到这一步的并且理解了的话。那么,少年,你可以进行到下一步了。

转载于:https://www.cnblogs.com/adoontheway/archive/2013/03/08/2949720.html

资源包括 PDF文档 文档中对STARLING以及相关框架的介绍以及代码实例 内容包括AS3 项目源文件两个 包含PDF中提到的例子 以及运行效果SWF10个 在Stage3D出现之前,Flash3D引擎( Papervision3D, Away3D,…)都是软解 CPU是通用处理器,没有为渲染三角形而优化过 Stage3D是一个新的Flash API。它专门用于实时3D渲染。用Stage3D,你可以让Flash充分利用用户计算机的GPU硬件加速能力。 GPU渲染过程比软件渲染模式快多了。GPU被设计用来干专门的工作:计算顶点和渲染三角形,如此而已。因为GPU硬件被用来处理专门的工作,所以硬件加速3D渲染就非常高效! Stage3D的API相对仍较为繁琐 • 比如绘制一个图形,在传统Stage中使用绘图API可能只需要几行代码,而Stage3D实现同样的图形显示却需要几十行或上百行代码 Starling的英文原意是叫做“八哥”的小鸟。 不过在Flash领域,Starling是一个ActionScript类库,它模仿了传统的 Flash显示列表。然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这 会带来非常明显的性能提升。 Starling并不是直接1:1的复制Flash API。所有的类都针对GPU模式进行了精简和优化。Starling开发者隐藏了Stage3D的内部细节,但如果您想创建自定义显示对象,也可以很容易访问到它们。 StarlingMVC是一个为使用Starling开发游戏的MVC框架。这个框架的特性方面,很像Swiz和RobotLegs。特性列表如下: • 依赖注入(DI)/控制反转(IOC) • 视图代理(View Mediation) • 事件捕获(Event Handling) • 非侵入性框架 • 配置简单 • 容易扩展 • 包含了很多对您的游戏有帮助的工具 StarlingMVC 框架是基于 Apache License 2.0协议开源的. 以上为部分PDF内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值