首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新NativeWindow中的阶段尺寸

新NativeWindow中的阶段尺寸
EN

Stack Overflow用户
提问于 2018-03-10 22:19:50
回答 2查看 98关注 0票数 0

我正在构建一个flash桌面应用程序,用户点击一个按钮,在一个新窗口中打开一个SWF文件(游戏),我使用一个NativeWindow来实现它,我做了以下工作:

代码语言:javascript
复制
var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD;
windowOptions.type = NativeWindowType.NORMAL;

var newWindow:NativeWindow = new NativeWindow(windowOptions);
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
newWindow.stage.align = StageAlign.TOP_LEFT;
newWindow.bounds = new Rectangle(100, 100, 2000, 800);

newWindow.activate();
var aLoader:Loader = new Loader;
aLoader.load(new URLRequest(path));
newWindow.stage.addChild(aLoader);

结果是这样的:

这个游戏不会占用整个可用的空间。当我将"NO_SCALE“改为”EXACT_FIT“时:

代码语言:javascript
复制
newWindow.stage.scaleMode = StageScaleMode.EXACT_FIT;

我得到了这个:

它只显示游戏的左上角。我还试过"SHOW_ALL“和"NO_BORDER”。我得到了与"EXACT_FIT“相同的结果。当我单独打开游戏的SWF文件时,它显示正常:

你知道怎样才能像上面的图片一样显示SWF游戏吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-11 04:32:29

最好的解决方案是让你的外部游戏的尺寸以像素为单位。您必须拉伸装载机以使其适合您的舞台。如果要尝试将不同大小的不同游戏加载到舞台上,请将swf尺寸与其URL地址一起保存。

代码语言:javascript
复制
var extSWFW:Number = 550;
var extSWFH:Number = 400;
var extURL:String = "./Data/someSwf.swf";

var mainStageWidth:Number = 1024;
var mainStageHeight:Nubmer = 768;

var aLoader:Loader = new Loader;
aLoader.load(new URLRequest(extURL));
newWindow.stage.addChild(aLoader);

aLoader.scaleY = aLoader.scaleX = Math.min(mainStageWidth/extSWFW,mainStageHeight/extSWFH);
票数 0
EN

Stack Overflow用户

发布于 2018-03-11 20:04:49

这并不是很难很难计算一个加载的SWF的尺寸,因为它被刻在它的头部,你可以在加载时读取和解析它。以下是工作示例:

代码语言:javascript
复制
package assortie 
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;

    public class Dimensions extends Sprite
    {
        private var loader:Loader;

        public function Dimensions() 
        {
            super();

            loader = new Loader;
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

            loader.load(new URLRequest("outer.swf"));
        }

        private function onLoaded(e:Event):void
        {
            var aBytes:ByteArray = loader.contentLoaderInfo.bytes;

            var aRect:Rectangle = new Rectangle;
            var aRead:BitReader = new BitReader(aBytes, 8);
            var perEntry:uint = aRead.readUnsigned(5);

            aRect.left   = aRead.readSigned(perEntry) / 20;
            aRect.right  = aRead.readSigned(perEntry) / 20;
            aRect.top    = aRead.readSigned(perEntry) / 20;
            aRect.bottom = aRead.readSigned(perEntry) / 20;

            aRead.dispose();
            aRead = null;

            trace(aRect);
        }
    }
}

import flash.utils.ByteArray;

internal class BitReader
{
    private var bytes:ByteArray;
    private var position:int;
    private var bits:String;

    public function BitReader(source:ByteArray, start:int)
    {
        bits = "";
        bytes = source;
        position = start;
    }

    public function readSigned(length:int):int
    {
        var aSign:int = (readBits(1) == "1")? -1: 1;

        return aSign * int(readUnsigned(length - 1));
    }

    public function readUnsigned(length:int):uint
    {
        return parseInt(readBits(length), 2);
    }

    private function readBits(length:int):String
    {
        while (length > bits.length) readAhead();

        var result:String = bits.substr(0, length);

        bits = bits.substr(length);

        return result;
    }

    static private const Z:String = "00000000";

    private function readAhead():void
    {
        var wasBits:String = bits;

        var aByte:String = bytes[position].toString(2);

        bits += Z.substr(aByte.length) + aByte;

        position++;
    }

    public function dispose():void
    {
        bits = null;
        bytes = null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49210105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档