使用Starling 框架时,报错Error: Error #3669: 输入大小错误, 解决方案

时间:2021-11-12 06:09:18

原因有二:
1.IE底下,SWFOBJECT嵌入swf的时候,有瞬间的stage的width跟height是0导致的。
2.stage.scaleMode = StageScaleMode.NO_SCALE;//这句话瞬间也会导致stage的width跟height为0.
解决办法:
上来先:stage.scaleMode = StageScaleMode.NO_SCALE;
然后别急着new Starling,而是先判断stage.width和height是否为0,为0,就侦听resize事件。具体代码:

public function Test()
{
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.showStats = true;
starlingEngin.start();
}