`

Web环境下使用Starling出现的问题收集整理

 
阅读更多

FlashBuilder环境下使用Starling出现的问题收集整理

 

刚开始学习Starling框架,遇到了不少问题,苦于无解,向Starling中文交流群求助。问题得到一 一解决。在这里非常感谢他们的热心回答。这篇博客就当作我在学习过程中遇到的问题的的罗列总结吧。希望对各位有所帮助,文章中如果有不对的地方,非常欢迎和感谢能够留言指出。

  • 问题1:为什么我在调试的时候,Console(控制台)输出的信息是   

[Starling] Initialization complete.

[Starling] Display Driver:Software Hw_disabled=oldDriver (Direct blitting)

出现如上的信息,说明Starling框架并没有起到作用,而是根据内部的SwiftShader(Transgaming)的的软件回退引擎,采用software模式运行。

这时候就要检查下自己电脑的显卡了。关于显卡,先补充点知识,来自网上:

  • 集成显卡是将显示芯片、显存及其相关电路都做在主板上,与主板融为一体;集成显卡的显示芯片有单独的,但现在大部分都集成在主板的北桥芯片中;一些主板集成的显卡也在主板上单独安装了显存,但其容量较小,集成显卡的显示效果与处理性能相对较弱,不能对显卡进行硬件升级,但可以通过CMOS调节频率或刷入新BIOS文件实现软件升级来挖掘显示芯片的潜能;集成显卡的优点是功耗低、发热量小、部分集成显卡的性能已经可以媲美入门级的独立显卡,所以不用花费额外的资金购买显卡

  • 独立显卡是指将显示芯片、显存及其相关电路单独做在一块电路板上,自成一体而作为一块独立的板卡存在,它需占用主板的扩展插槽(ISA、PCI、AGP或PCI-E。独立显卡单独安装有显存,一般不占用系统内存,在技术上也较集成显卡先进得多,比集成显卡能够得到更好的显示效果和性能,容易进行显卡的硬件升级;其缺点是系统功耗有所加大,发热量也较大,需额外花费购买显卡的资金。 独立显卡成独立的板卡存在,需要插在主板的相应接口上,独立显卡具备单独的显存,不占用系统内存,而且技术上领先于集成显卡,能够提供更好的显示效果和运行性能。

  • GPU(类似于主板CPU) 全称是Graphic Processing Unit,中文翻译为"图形处理器"。NVIDIA公司在发布GeForce 256图形处理芯片时首先提出的概念。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产主要由nVidia与ATI两家厂商生产。

  • DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX开发之初是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。最新版本为DirectX 10。 

  • OpenGL是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。OpenGL就是支持这种转换的程序库,它源于SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。SGI在1992年7月发布1.0版,后成为工业标准,由成立于1992年的独立财团OpenGL Architecture Review Board (ARB)控制。SGI等ARB成员以投票方式产生标准,并制成规范文档(Specification)公布,各软硬件厂商据此开发自己系统上的实现。只有通过了ARB规范全部测试的实现才能称为OpenGL。1995年12月ARB批准了1.1版本,最新版规范是在SIGGRAPH2007公布的OpenGL 3.0。

 

确保你电脑的显卡支持DirectX或者OpenGL,如果你的机子显卡是集成显卡的话,可能不支持;如果有独立显卡,确保当前开启了高性能GPU。由于我使用的笔记本有着双显卡。

一个是AMD的独显,一个是英特尔高清显卡系列属于集成显卡。当时在FlashBuilder下编码调试的时候,谁知道我的笔记本开启的是省电GPU模式,控制台输出是software模式。如果读者遇到类似情况,可以按照如下开启高性能GPU模式,切换到独立显卡。

图1

右击桌面,出现图1,选择显示卡属性。

图2

  在电源选项中选择可切换显卡

图3   

  选择高性能GPU,OK。过个几秒,等待系统切换。

童年注:

高性能GPU:就是切换到了独立显卡,但相对要耗电一些,但带来的是性能上的提高。

省电GPU:集成显卡,在集成显卡模式下,要省电一些。如果在没有外接电源只有笔记本电池的情况下,开启这个模式可以省电,延长续航时间。 

切换完毕后,再次回到FlashBuilder中,调试看控制台信息:

[Starling] Initialization complete.

[Starling] Display Driver:DirectX9 (Direct blitting)

  显然Starling的GPU加速已经成功开启。

  • 问题2:为什么我调试的时候舞台上没有任何东西,但是在bin-debug文件夹下打开我的swf文件却能看到东西呢?

如果你调试采用的是浏览器调试,不是swf直接调试,也就是你在项目属性里的编译器选项里面勾选了HTML包装器,使用的是系统默认浏览器或者IE浏览器,确保你的浏览器安装了debug版本。

如何知道我是否安装呢?

用这个网址测试。 http://www.flashplayerversion.com/

如果是Yes,你调试仍然看不见舞台上的东西,看看你的入口文件中是否有

1
2
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

如果有的话注释掉,再次调试测试,应该就可以看见了。

如果出现

的话,打开html包装器文件夹也就是html-template文件夹,用文本编辑器打开html-template.html文件,在js里面的params加入如下一行

params.wmode = "direct";

就像如下:

1
2
3
4
5
6
var params = {};
params.quality = "high";
params.bgcolor = "${bgcolor}";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
params.wmode = "direct";
  • 问题3:出现了如下错误

Error:Error #3669: 输入大小错误

at flash.display3D::Context3D/configureBackBuffer( )

   在浏览器下,SWFOBJECT嵌入swf的时候,有瞬间的stage的width和height是0导致的,而 stage.scaleMode  = StageScaleMode.NO_SCALE这句话会瞬间导致stage的width和height为0。

   那怎么解决?

   方法1:不用html包装器,在编译器里面不勾选

           

   方法2:在使用html包装器的情况下,可以延迟初始化starling。

1
2
3
4
5
6
7
8
9
10
11
12
private var mStarling:Starling;
public function StartUp():void{
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;
    setTimeout(initStarling,1000);
}
                                  
private function initStarling():void{
    mStarling = new Starling(Game,stage);
    mStarling.antiAliasing = 1;
    mStarling.start();
}

setTimeout(initStarling,1000);这是Flash预留了1秒处理舞台尺寸,然后处理初始化starling函数。

方法3:在使用html包装器的情况下,加入舞台重置尺寸事件的侦听来处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function StartUp()
{
    stage.align = StageAlign.TOP_LEFT;
    stage.scaleMode = StageScaleMode.NO_SCALE;
    if (stage.stageWidth>0 && stage.stageHeight>0){
        start();
    }else{
        stage.addEventListener(Event.RESIZE,onResize);
    }
}
private function onResize(e:Event):void
{
    if (stage.stageWidth>0 && stage.stageHeight>0){
        stage.removeEventListener(Event.RESIZE,onResize);
    start();
}
}
public function start():void{
    starlingEngin = new Starling(Game, stage);
    starlingEngin.antiAliasing = 1;
    starlingEngin.start();
}

       群里网友也提到了用Preloader预加载处理窗口大小,读者可以去尝试下。

http://flashas3.diandian.com/post/2012-07-25/40031882504

分享到:
评论

相关推荐

    starling使用范例

    Starling是一个基于Adobe Flash Player和Adobe AIR的2D游戏开发框架,它利用硬件加速图形渲染,为开发者提供了高性能的游戏开发环境。本示例主要讲解如何使用Starling进行基本的编程实践,包括创建舞台、添加图像、...

    Starling1.5.1

    Starling 是一个高性能的2D游戏开发框架,它基于Adobe Flash和ActionScript 3.0设计,由Gamua公司开发。Starling的目标是为开发者提供一个简单易用、高效的平台,用于创建高质量的2D游戏和图形密集型应用,尤其适用...

    基于starling的游戏

    1. **项目设置**:在Flash环境中配置Starling框架,设置Stage3D的舞台大小和渲染模式。 2. **资源管理**:利用AssetManager管理游戏中的图片、音频、字体等资源。 3. **场景设计**:创建多个Scene,每个Scene代表...

    air starling 图片旋转

    在开发Adobe AIR应用程序时,使用Starling框架进行2D图形渲染是常见的选择。Starling是一个高性能的游戏和图形库,它基于ActionScript 3,并且专为Adobe AIR平台设计。本篇文章将深入探讨如何在Starling中实现图片...

    框架starling

    4. **纹理 atlases**:Starling支持纹理 atlases,这是一种优化资源加载和管理的方法,可以将多个小图像打包到单个大纹理中,减少内存占用和加载时间。 5. **粒子系统**:内置的ParticleSystem类使得创建复杂的粒子...

    adobe starling as3 flash 3d Starling演讲PPT以及附件

    然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这 会带来非常明显的性能提升。 Starling并不是直接1:1的复制Flash API。所有的类都针对GPU模式进行了...

    starling 任意形状遮罩

    Starling 任意形状遮罩是一种在AS3(ActionScript 3)环境中,使用Starling框架实现的高级图形处理技术。Starling是一个针对Adobe Flash Player和Adobe AIR的2D游戏开发框架,它允许开发者利用硬件加速来提升游戏...

    PrimaryFeather-Starling-Framework-v1.3-175-g09eebe4.zip

    总的来说,Starling Framework为2D游戏开发者提供了强大的工具,通过高效的Stage3D技术,使得在Web和桌面环境中创建复杂的2D互动体验成为可能。通过分析和研究提供的源代码,开发者不仅可以了解其内部工作原理,还能...

    Starling开发的微信飞机大战源码

    在微信飞机大战的源码中,我们可以看到如何使用Starling创建游戏场景、加载资源、管理对象生命周期以及实现游戏循环等关键功能。 “Flash”是Starling所依赖的基础平台,虽然现在Flash在网页端的应用逐渐减少,但在...

    Starling Feathers:Starling专属UI框架

    7. **社区支持**:由于Starling和Feathers的广泛使用,它们拥有活跃的开发者社区,开发者可以在论坛、博客和GitHub上获取帮助,分享经验,共同解决问题。 在实际开发中,使用Feathers可以极大地提高开发效率,减少...

    starling.swc

    在Flash开发环境中,Starling框架能够充分利用硬件加速,为游戏和复杂的交互应用提供流畅的体验。 标题中的"starling.swc"是一种编译后的库文件,它是Starling框架的预编译组件,包含已编译的ActionScript类和资源...

    Starling开发的游戏

    《Starling开发的游戏》 在游戏开发领域,Starling框架是一个非常重要的工具,它为ActionScript 3(AS3)开发者提供了高效且跨平台的2D游戏开发解决方案。本篇文章将深入探讨Starling框架的核心特性、工作原理以及...

    starling中文API

    "Starling中文API"是针对这个框架的中文文档,帮助开发者理解和使用Starling的各项功能。 API(Application Programming Interface)是一组预先定义的函数、类、对象和协议,用于构建软件应用。Starling中文API1.2....

    starling版消灭星星

    总结起来,"Starling版消灭星星"利用了Starling框架的强大性能和易用性,结合源码,我们可以深入学习到如何使用AS3进行游戏开发,包括图形渲染、事件处理、资源管理、游戏逻辑以及音频处理等多个方面,对于想要从事...

    starling中文版粒子

    starling中文版粒子下载

    Starling Graphics extension 绘图API 扩展

    Starling Graphics扩展是针对Starling框架的一个重要组件,它提供了丰富的绘图API,极大地增强了在移动设备上进行2D图形渲染的能力。Starling是一个高效、跨平台的ActionScript 3库,专门设计用于游戏开发,它利用...

    Starling1.8源码(包含粒子系统扩展包)

    Starling框架是基于Adobe Flash平台的一个高性能2D游戏开发库,它使用ActionScript3语言,但通过硬件加速技术,能够实现接近原生应用的运行效率。这个“Starling1.8源码(包含粒子系统扩展包)”是一个包含了Starling...

    flash stage3D扩展 starling api 文档

    flash stage3D starling

    Starling,Features和StarlingMVC第三方库

    Starling 使用Stage3D技术,能够将2D渲染优化到接近原生代码的速度,这使得它成为开发复杂的动画应用和游戏的理想选择。 Starling 的核心特性包括: 1. **硬件加速**:利用GPU进行图形处理,提供流畅的60帧每秒的...

Global site tag (gtag.js) - Google Analytics