加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:23:55 所属栏目:百科 来源:网络整理
导读:如果将stage.scaleMode设置为StageScaleMode.SHOW_ALL,则可以按比例放大或缩小swf,并可以在顶部/底部或左/右填充.但是,stage.width高度始终返回swf定义的宽度和高度,stage.scaleX Y始终返回1.据我所知,不会抛出调整大小事件.那么我如何得到实际的尺度和尺寸
如果将stage.scaleMode设置为StageScaleMode.SHOW_ALL,则可以按比例放大或缩小swf,并可以在顶部/底部或左/右填充.但是,stage.width高度始终返回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,horizontalEmptySpace / 2,stageH);
        graphics.drawRect(stageW - horizontalEmptySpace / 2,stageH);
    }else{
        var verticalEmptySpace : Number = stageH - yourVisibleContent.height;
        graphics.drawRect(0,stageW,verticalEmptySpace / 2);
        graphics.drawRect(0,stageH - verticalEmptySpace / 2,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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读