【问题标题】:Setting stage to allow for any stage width or height设置舞台以允许任何舞台宽度或高度
【发布时间】:2011-08-24 16:52:19
【问题描述】:

我正在为一家网络公司开发一个网络应用程序,它是一个“引擎”,可以加载外部 swf 文件并以幻灯片的方式呈现它们,就像这些天为网站前端标题内容区域呈现的内容一样

事情几乎准备好了,但我遇到了一些设计障碍。虽然我一直在愉快地开发 930x270 的舞台宽度和高度,但事实是并非每个站点都会使用这些尺寸。出于这个确切原因,运行的所有内容都使用 stage.stageWidth 属性(与 stage.stageHeight 相同),但是我似乎无法动态设置宽度和高度值,即使在网页本身上使用基本到高级嵌入技术也是如此。

使用 Flex/FlashBuilder 元信息

[SWF(frameRate=30, widthPercent=100, heightPercent=100)]

或者即使我设置了特定的宽度和高度。 例如,如果我没有设置任何东西(只是帧速率)并且我将生成的 swf 嵌入到页面中的 980x300 元素中,stage.stageWidth STILL 仍然只报告 500,完全弄乱了我的元素的显示方式。

我也试过设置 scaleMode,现在设置为

stage.scaleMode = StageScaleMode.EXACT_FIT;

它在我的构造函数中设置的第一件事。仍然是 500(没有任何元信息集,甚至没有设置 widthPercent 和 heightPercent)。

我需要嵌入式闪存几乎可以是任意大小而无需重新编译,也无需担心纵横比,加载的内容将为该特定项目手动创建,但整个项目依赖于引擎阶段的宽度属性。

很抱歉,长长的文字墙,但我的想法已经用完了......

MXML 中是否有任何我可以修改的属性或一些我缺少的嵌入策略来将阶段属性设置为其嵌入对象的宽度和高度?

【问题讨论】:

  • 我无法理解。 “出于这个确切原因,运行的所有内容都使用 stage.stageWidth 属性”在这种情况下,“所有内容”是什么?使用它的原因是什么?您如何尝试动态设置 stageWidth/stageHeight?在 Flex 中,您通常不会直接接触舞台。
  • 它是一个“加载引擎”项目,它只为一件事和一件事而设计:将 swf 文件加载到其中(引用自 XML 文件),播放每个文件(一个接一个),当活动的 swf 文件播放完毕,它会将每个 swf 向左移动整个舞台宽度的数量(因此它们可以重置回屏幕外的第 1 帧,并且新的活动 swf 可以开始播放)。当 stage.stageWidth 仅报告 500 时,这意味着每个 swf 仅偏移 500,并且它们仅以 500 的增量向左或向右移动
  • 因此,当在嵌入标签或 swfObject 元素中,宽度和高度设置为 930x270 之类的东西时,引擎仍然只报告从那里返回 500px 宽度,一切(在这种情况下)开始重叠,你看
  • 我认为在这种情况下设置 stage.scaleMode = StageScaleMode.NO_SCALE 会更好(EXACT_FIT 会拉伸 swf)。

标签: apache-flex actionscript-3 flash-builder mxml


【解决方案1】:

尝试设置以下内容:

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

还可以使用主构造函数之外的方法来获取 stageHeight 和 stageWidth 有时舞台还没有“准备好”。

【讨论】:

  • 啊完美!奇迹般有效!谢谢! :D 现在只需要调整一些数学 :D(我知道会有办法,只是没打对)
猜你喜欢
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
相关资源
最近更新 更多