2013-10-10 45 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 = "";