即使我为每个人指定了不同的宽度和高度。
vid = new Video(600, 800);
this.addChild(vid);
trace(vid.width); //600
trace(vid.height); //800
vid2 = new Video(1000, 1200);
this.addChild(vid2);
trace(vid2.width); //600
trace(vid2.height); //800
这里发生了什么?这是一个flash bug吗?
答案 0 :(得分:1)
这是一个错误。解决方法很简单 - 您只需在调用构造函数后手动设置宽度和高度。我这样做是通过创建自己的Video类继承自flash.media中的类,如下所示:
package com.ganzogo.media {
import flash.media.Video;
public class Video extends flash.media.Video {
public function Video(width:int=320, height:int=240) {
super(width, height);
this.width = width;
this.height = height;
}
}
}
然后只需导入此类,您的代码就可以运行了。请注意,我正在设置尺寸的默认值;这是为了匹配父类中的默认值。
答案 1 :(得分:1)
这个问题可能会解决显示问题,但我们在这里遇到了另一个灾难问题。当您使用BitmapData“绘制”视频内容时,我们再次遇到此问题,无论您尝试做什么,您从视频中快照的图像都是您为该FlashPlayer实例创建的第一个视频组件的大小。
无论你做什么都不会解决它。所以解决方法如下:
为您创建的第一个视频对象提供最大尺寸(以像素为单位)。例如:
var videoDisplay:Videonew Video(1280, 720);
要对视频显示进行快照,您需要使用Matrix类,例如:
var extractImage:BitmapData = new BitmapData(videoDisplay.videoWidth, videoDisplay.videoHeight);
var videoMatrix:Matrix = new Matrix();
videoMatrix.scale(Number(videoDisplay.videoWidth) / 1280.0, Number(videoDisplay.videoHeight) / 720.0);
extractImage.draw(videoDisplay, videoMatrix, null,null,null, true);
现在,当您使用此位图作为图像时,您将获得想要的正确图像。 如果您使用较大的视频分辨率,请增加该视频大小。
答案 2 :(得分:0)
我刚刚在Mac上的Flash CS4中尝试过您的示例代码,但我没有看到这个问题(我必须在变量名称之前添加var
)。您使用的是什么版本和平台?这可能是一个错误。