2014-02-15 120 views
1

我有一個使用Starling框架在AS3編寫的遊戲。它是爲移動設備構建的,因此支持大量屏幕非常重要。我寫了所有我的代碼來支持多種尺寸,但我遇到了一個問題,我似乎無法在網上找到解決方案。調整椋鳥手機遊戲的大小以適應多種分辨率。

舞臺縮放和資產縮放是偉大的工作,但問題是這一行:

[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")] 

設置SWF尺寸使得應用永久認爲這是一個顯示屏,768×1 1024所以,如果上我在iPhone上而不是iPad上運行它,該應用程序將運行,但只會填充第一個1024像素的高度,並將超過640像素寬度。但是,如果我使用iPhone分辨率對上面的行進行硬編碼,它看起來會很棒。所以我的問題是如何動態地做到這一點?我嘗試過沒有運氣的resize事件監聽器。正如我所說的,我的問題不在舞臺上,而是在SWF的初始階段。以下是我的整個初始化類。請讓我知道我失蹤的是什麼!謝謝!

[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")] 

public class FlappyBird2 extends Sprite 
{ 
    private var myStarling:Starling; 

    public function FlappyBird2() 
    { 
     super(); 
     stage.fullScreenSourceRect = new Rectangle(0, 0, Capabilities.screenResolutionX, Capabilities.screenResolutionY); 
     stage.displayState = StageDisplayState.FULL_SCREEN; 

     var viewPortRectangle:Rectangle = new Rectangle(); 
     viewPortRectangle.width = stage.stageWidth; 
     viewPortRectangle.height = stage.stageHeight; 

     trace("screen res: X: "+ Capabilities.screenResolutionX + "Y: " + Capabilities.screenResolutionY); 
     myStarling = new Starling(Game, stage, viewPortRectangle); 
     myStarling.antiAliasing = 1; 
     myStarling.start(); 

    } 

回答

0

顯然縮放的東西不會讓你很遠。

有很多方法可以解決這個問題,但通常它涉及到一些MVC模式,從UI繪畫分離邏輯和數據。

一旦你這樣做,你可以:

  • 作出通過代碼或配置文件,每個屏幕的分辨率
  • 使UI畫動態有不同的看法,因此,它適用於任何分辨率和屏幕DPI

根據您的項目,其中一個選項(或組合)將更適合您。

+0

我將如何使用不同屏幕分辨率的配置文件? –

+0

我已經在使用MVC模式,我的應用程序在邏輯外處理用戶界面,這部分工作正常,它是不同屏幕的配置,我遇到了問題。我將如何使用不同屏幕分辨率的配置文件? –

1

試試這個。如果您正在使用多種分辨率,則只需要擁有SCALE_FACTOR分區,否則請移除分區。

var viewPort : Rectangle = new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight); 

    //create the main instance of starling 
    engine = new Starling(_root, stage, viewPort); 

    //main configs 
    engine.stage.stageWidth  = viewPort.width/SCALE_FACTOR; 
    engine.stage.stageHeight = viewPort.height/SCALE_FACTOR; 

我希望這會幫助你。 這裏還有一個有趣的教程http://wiki.starling-framework.org/manual/multi-resolution_development;否則你應該檢查Starling論壇他們在那裏有很多這些類似的問題。

乾杯

0

簡單..

只要打開此:

[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")]

這樣:

[SWF(frameRate="60", backgroundColor="0x333333")]

;)

相關問題