2014-02-15 118 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")]

;)

相关问题