文档章节

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

童年伊梦
 童年伊梦
发布于 2012/09/25 11:56
字数 2147
阅读 336
收藏 0

刚开始学习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。

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包装器的情况下,加入舞台重置尺寸事件的侦听来处理。

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();
}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预加载处理窗口大小,读者可以去尝试下。

© 著作权归作者所有

童年伊梦
粉丝 1
博文 29
码字总数 21736
作品 0
浦东
私信 提问
Flex错误:进程已终止,没有建立到调试器的连接。 initial content not ...

出现这个错误有点让人摸不着头脑,网上有人指出把工程中的*-app.xml中的 <initialWindow><content>HelloWorld.swf</content> 标签中的XXX.swf去掉就可以了,但很可惜的是这个标签中的字段很多...

独鸣在彼岸
2013/10/30
0
2
Flex SDK 4.5.1、FlashBuilder4.5.1发布

Adobe Flex SDK 4.5.1 、FlashBuilder 4.5.1 正式发布(中文版同时发布,中文版和英文版是同一个安装包) Flex SDK 4.5.1相比4.5缩小了约10M的体积,而FlashBuilder4.5.1确增加到了1.02G的大...

B超
2011/07/09
18.2K
2
Adobe Flash Builder 4.7下载地址及破解补丁(32位&64位)Adobe Fla

Adobe FlashBuilder 4.7是开发flex的利器,能显著提高flex的开发效率。最新版的是4.7,去官网上下载时每次都要登录才能下载,特麻烦,这次下载时就把相关的下载地址给记录了下来,有需要的童...

dml124
2014/04/12
0
0
用flexMojos构建基于flex4的项目,不能产生html包装,怎么办

@xiaohan00 你好,想跟你请教个问题:1、用flexMojos构建基于flex4的项目,导入eclipse中,不能被eclipse识别为正常的flashbuilder 项目,不能产生html包装。...

qwfys
2013/03/09
169
0
关于ADT命令导出AIR发行版的一些问题

用Flex 有一段时间了,之前导出发行版一直用Flashbuilder自带的功能进行导出. 除了慢,没别的毛病. 但是,前段时间发现这个功能的时间戳功能勾上就报错.各种百度,发现勾上后Flashbuilder默认去 ...

章大大
2018/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos 设置hostname

1、centos 6 hostname配置文件为 /etc/sysconfig/network 内容为 NETWORKING=yesHOSTNAME=test_hostname hostname是Linux系统下的一个内核参数,它保存在 /proc/sys/kernel/hostname 下,但......

燃犀
12分钟前
0
0
openSUSE

opensuse aliyun镜像 sudo zypper addrepo -f https://mirrors.aliyun.com/opensuse/distribution/leap/15.0/repo/oss/ aliyun-Oss sudo zypper addrepo -f https://mirrors.aliyun.com/ope......

李有常
18分钟前
0
0
五月天 知足 [結他chord譜]

詞曲: 阿信 Key:E 4/4 Arranged By Kermit Tam Capo 4 > Play C |C   G  |Am  Em  (怎)麼去(擁)有 (一)道彩(虹)  |F   C |F     G (怎)麼去(擁)抱 (一)夏天的(風) |...

阿锋zxf
24分钟前
1
0
OSChina 周二乱弹 —— 你醒啦?现在你已经是丧尸了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小鱼丁 :分享全仁权的单曲《걱정말아요 그대 (你不要担心)》: 《걱정말아요 그대 (你不要担心)》- 全仁权 手机党少年们想听歌,请使劲儿戳(...

小小编辑
26分钟前
394
7
再一次生产 CPU 高负载排查实践

前言 前几日早上打开邮箱收到一封监控报警邮件:某某 ip 服务器 CPU 负载较高,请研发尽快排查解决,发送时间正好是凌晨。 其实早在去年我也处理过类似的问题,并记录下来:《一次生产 CPU ...

crossoverJie
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部