我使用Starling框架在AS3中编写了一个游戏。它专为移动设备而设计,因此支持大量屏幕非常重要。我已经编写了所有代码以支持许多大小,但我遇到了麻烦,我似乎无法在网上找到解决方案。
舞台重新缩放和资产重新缩放效果很好,但问题是这一行:
[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")]
设置SWF大小会使应用程序永久认为它位于768 x 1024的显示器上。因此,如果我在iPhone而不是ipad上运行它,应用程序将运行,但只会填充第一个1024px高度并且将会在640px宽度上运行。但是,如果我用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 :(得分: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论坛,他们在那里有很多类似的问题。
干杯
答案 1 :(得分:0)
显然缩放的东西不会让你走得太远。
有很多方法可以解决这个问题,但通常需要遵循一些MVC模式,将逻辑和数据与UI绘画分开。
完成后,您可以:
根据您的项目,其中一个选项(或组合)将更适合您。
答案 2 :(得分:0)
简单..
转过身来:
[SWF(framerate="60", width="768", height="1024", backgroundColor="0x333333")]
到此:
[SWF( frameRate="60", backgroundColor="0x333333")]
)