设置swf的高度和宽度后视频消失了。

4
我在AS3中调整视频大小和舞台的时候遇到了问题。
我已经设置了一个netstream并且能够播放视频,但是每当我设置嵌入对象在swfobject上的高度和宽度时,视频就会消失。
我仍然可以听到音频,并且可以确定对象的大小是正确的,但没有视频。我尝试过设置stage.stageWidth/stageHeight属性,但似乎没有生效。例如:
stage.stageWidth = 400;
trace(stage.stageWidth); // equals 500 for some reason

stage.stageWidth/Height属性似乎与flash对象在浏览器中占据的区域无关(它是全屏)。我还尝试设置stage.width/height,但收到错误消息,指出Stage类不实现这些属性。我感到相当困惑。


4
stageWidth/stageHeight 实际上是只读的。如果比例模式不是 NO_SCALE,则即使缩放后,大小仍会报告原始 SWF 大小。请展示您播放视频的代码,您的 swfobject 代码也可能很有用。 - BadFeelingAboutThis
你可以使用 stage.fullScreenWidth 获取显示器的完整宽度。你不能在 Flash 内部设置舞台的宽度/高度,容器需要完成这个任务。 - BadFeelingAboutThis
1
设置 stage.scaleMode = StageScaleMode.NO_SCALE,然后指定视频对象的高度和宽度似乎已经解决了问题。感谢您在缩放方面指导我走向正确的方向。 - Rob Allsopp
1
你能发一下你的代码吗?很多事情可能会发生,没有代码很难评估出问题在哪里。 - Gerrit Bertier
除了视频之外还有其他的东西显示吗?另外,这是使用Flash Pro、Flash Builder还是其他工具构建的? - Gone3d
显示剩余2条评论
1个回答

0
您无法通过 stage.stageWidth=600; 更改 SWF 的舞台大小,但是您可以告诉包含 HTML 页面更改嵌入式 SWF 的宽度/高度属性,然后在您的 SWF 中响应舞台大小更改。
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, onStageResized, false, 0, true);

并从那里更新布局。

如果您调整 HTML 中的 / 元素大小,那么将调整 SWF 的舞台大小。

然而,如果您在 AS3 中指定不进行缩放,则 SWF 的内容将会缩放:

stage.scaleMode = StageScaleMode.NO_SCALE;

在处理可扩展的 SWF 时,需要注意默认情况下导出的舞台尺寸始终位于调整大小的区域中心。

我发现如果所有内容都从调整大小区域的左上角开始测量会更容易,可以通过添加以下内容实现:

stage.align = StageAlign.TOP_LEFT;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接