2013-10-10 109 views
0

我目前正在通过Adobe Air将一款Flash游戏移植到OUYA(一款支持Android的设备)。AIR to Android/OUYA的Flash游戏:在电视上制作全屏

大部分工作已经完成;它已打包并在Android设备上运行。

但是!它卡在屏幕上的一个小角落,如seen in this picture

我想要的是游戏缩放到屏幕的全尺寸,同时保持纵横比。我已经看到其他的Flash到空气到Android游戏这样做,所以我知道这是可能的,我只是不知道如何。

任何人有任何提示吗?谢谢!

回答

1

阅读上在Stage.scaleMode:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#scaleMode

这应该是你到底需要什么。

另一种选择,以保持纵横比,如果你有保存一切都缩放到适合自己的父容器:

var widthRatio:Number = stage.stageWidth/BASE_WIDTH; 
var heightRatio:Number = stage.stageHeight/BASE_HEIGHT; 

if (widthRatio < heightRatio) 
{ 
    container.scaleX = container.scaleY = widthRatio; 
} 
else 
{ 
    container.scaleX = container.scaleY = heightRatio; 
} 

在这一点上,你既可以中心集装箱的阶段:

container.x = (stage.stageWidth - container.width) /2; 
container.y = (stage.stageHeight - container.height)/2; 

或者做些别的事情吧。

+0

确实'scaleMode'对移动应用有什么影响?我不认为它确实如此,尽管我可能在这方面是错误的(我将无法测试,直到早上)。无论如何,我认为你在这里接近正确的想法。原始游戏可能是在扩展的基础上构建的,移动应用程序可能无法扩展。游戏可能需要重新制作,因此它可以扩展自己(如果不是这样,它应该首先完成) –

+0

这提供了更多信息:http://www.adobe.com/ DEVNET /空气/用品/多屏sizes.html。 该文章指出,如果您想调整自己的大小以便似乎表明它可以在移动设置中工作,则必须使用NO_SCALE来获取调整大小事件。 除此之外,文章还谈到了其他一些方法。 – Nabren

+0

如果您不使用scaleMode,请参阅原始答案中提供的第二个解决方案。该解决方案将允许它在保持纵横比的同时尽可能地填充屏幕时的大小不同。如果您希望它保持相同的相对大小而不考虑屏幕,则可基于dpi进行缩放。上面的文章解释了这种情况。 – Nabren

0

原来所有我需要使它的工作是的这两行代码:

stage.scaleMode = StageScaleMode.SHOW_ALL; 
stage.align = "";