Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 调整starling手机游戏的大小以适应多种分辨率。_Actionscript 3_Flash_Mobile_Air_Starling Framework - Fatal编程技术网

Actionscript 3 调整starling手机游戏的大小以适应多种分辨率。

Actionscript 3 调整starling手机游戏的大小以适应多种分辨率。,actionscript-3,flash,mobile,air,starling-framework,Actionscript 3,Flash,Mobile,Air,Starling Framework,我有一个使用Starling框架用AS3编写的游戏。它是为移动设备而设计的,因此支持大量屏幕非常重要。我写的所有代码都支持多种尺寸,但我遇到了一个障碍,我似乎无法在网上找到解决方案 阶段重缩放和资产重缩放效果很好,但问题是这一行: [SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")] 设置SWF大小使应用程序永久认为它位于768 x 1024的显示器上。因此,如果我在iPhone而不是ipad

我有一个使用Starling框架用AS3编写的游戏。它是为移动设备而设计的,因此支持大量屏幕非常重要。我写的所有代码都支持多种尺寸,但我遇到了一个障碍,我似乎无法在网上找到解决方案

阶段重缩放和资产重缩放效果很好,但问题是这一行:

[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")]
设置SWF大小使应用程序永久认为它位于768 x 1024的显示器上。因此,如果我在iPhone而不是ipad上运行它,该应用程序将运行,但只会填充前1024像素的高度,并将运行在640像素的宽度上。然而,如果我用iPhone分辨率硬编码上面的代码,它看起来会很棒。所以我的问题是,如何动态地实现这一点?我尝试过调整大小事件侦听器,但没有成功。正如我所说,我的问题不在舞台上,而是在主权财富基金的初始阶段。下面是我的整个初始化类。请让我知道我错过了什么!谢谢

[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();

    }

显然,缩放不会让你走得很远

有很多方法可以解决这个问题,但通常需要遵循一些MVC模式,将逻辑和数据从UI绘制中分离出来

完成后,您可以:

  • 通过代码或配置文件为每个屏幕分辨率创建不同的视图
  • 使UI绘制动态化,以便适应任何分辨率和屏幕DPI

根据您的项目,其中一个选项(或组合)更适合您。

试试这个。如果您使用的是多分辨率,您只需要使用比例因子除法,否则请删除除法

  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;
我希望这会对你有所帮助。 下面还有一个有趣的教程;否则你应该去八哥论坛看看,那里有很多类似的问题

干杯

简单

把这个翻过来:

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

为此:

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


)()

对于不同的屏幕分辨率,我应该如何使用配置文件?我已经在使用MVC模式,我的应用程序在逻辑之外处理UI,这部分工作正常,我遇到的问题是不同屏幕的配置。对于不同的屏幕分辨率,如何使用配置文件?