gpt4 book ai didi

flash - 如何使用 StageScaleMode.SHOW_ALL 获取舞台尺寸?

转载 作者:行者123 更新时间:2023-12-01 01:29:57 26 4
gpt4 key购买 nike

如果您将 stage.scaleMode 设置为 StageScaleMode.SHOW_ALL,则您的 swf 可能会放大或缩小,并且可能会填充在顶部/底部或左侧/右侧。但是, stage.width + height 始终返回由您的 swf 定义的宽度和高度,而 stage.scaleX + Y 始终返回 1。据我所知,不会引发调整大小事件。那么我如何获得实际的比例和尺寸?

我希望他们解决两个问题:

  • 只有当用户可以看到它时,我才想在顶部/底部或左侧/右侧填充填充物。
  • 我正在将矢量绘制到位图中,并希望正确缩放它,使其看起来不锯齿(或使用 bitmap.smoothing 模糊)。当您 cacheAsBitmap=true 时,Flash 似乎可以正确进行缩放,那么我该如何重新创建它呢?
  • 最佳答案

    在您的情况下,使用 StageScaleMode.NO_SCALE 并自行编码调整大小可能会更容易:

    stage.addEventListener(Event.RESIZE, onStageResize);
    private function onStageResize(event : Event) : void
    {
    var stageW : int = stage.stageWidth;
    var stageH : int = stage.stageHeight;

    var contentW : int = yourVisibleContent.width;
    var contentH : int = yourVisibleContent.height;

    // resize it to fit
    var canvasAspectRatio : Number = stageW / stageH;
    var contentAspectRatio : Number = contentW / contentH;
    if(canvasAspectRatio > contentAspectRatio)
    {
    yourVisibleContent.height = stageH;
    yourVisibleContent.width = yourVisibleContent.height * contentAspectRatio;
    } else {

    yourVisibleContent.width = stageW;
    yourVisibleContent.height = yourVisibleContent.width / contentAspectRatio;
    }

    // center it:
    yourVisibleContent.x = (stageW - yourVisibleContent.width) / 2;
    yourVisibleContent.y = (stageH - yourVisibleContent.height) / 2;

    // fill remaining space with black:
    graphics.beginFill(0x000000);
    if(canvasAspectRatio > contentAspectRatio)
    {
    var horizontalEmptySpace : Number = stageW - yourVisibleContent.width;
    graphics.drawRect(0, 0, horizontalEmptySpace / 2, stageH);
    graphics.drawRect(stageW - horizontalEmptySpace / 2, 0, horizontalEmptySpace / 2, stageH);
    }else{
    var verticalEmptySpace : Number = stageH - yourVisibleContent.height;
    graphics.drawRect(0, 0, stageW, verticalEmptySpace / 2);
    graphics.drawRect(0, stageH - verticalEmptySpace / 2, stageW, verticalEmptySpace / 2);
    }

    // now you can also redraw your bitmaps with higher resolutions
    // it is easy to read the scale of your content with: yourVisibleContent.scaleX and yourVisibleContent.scaleY
    }

    关于flash - 如何使用 StageScaleMode.SHOW_ALL 获取舞台尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5466513/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com