Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3 FLVPlayback组件始终在视频上方和下方有黑色条,即使精确缩放_Flash_Actionscript 3_Actionscript_Flvplayback_Flashvars - Fatal编程技术网

Flash AS3 FLVPlayback组件始终在视频上方和下方有黑色条,即使精确缩放

Flash AS3 FLVPlayback组件始终在视频上方和下方有黑色条,即使精确缩放,flash,actionscript-3,actionscript,flvplayback,flashvars,Flash,Actionscript 3,Actionscript,Flvplayback,Flashvars,我围绕工具包中的FLVPlayback组件编写了一个非常基本的flash播放器,然后由SWFObject将其放在页面中。由于某些原因,即使缩放模式设置为精确匹配,视频上方和下方始终显示黑色条。这对我来说没有意义,因为预览图像设置为与视频相同的x、y位置以及高度和宽度,但它完全适合并且没有黑条 有什么简单的东西我遗漏了吗?我为大量的代码表示歉意,但我不确定您需要如何查看 我正在使用SWFObject向播放器注入以下代码: <script type="text/javascript">

我围绕工具包中的FLVPlayback组件编写了一个非常基本的flash播放器,然后由SWFObject将其放在页面中。由于某些原因,即使缩放模式设置为精确匹配,视频上方和下方始终显示黑色条。这对我来说没有意义,因为预览图像设置为与视频相同的x、y位置以及高度和宽度,但它完全适合并且没有黑条

有什么简单的东西我遗漏了吗?我为大量的代码表示歉意,但我不确定您需要如何查看

我正在使用SWFObject向播放器注入以下代码:

<script type="text/javascript">
var flashvars = {
   playerSkinURL: 'SkinUnderPlayStopSeekFullVol.swf',
   videoURL: 'video.flv',
   previewImageURL: 'video-preview.jpg',
   scaleMode: 'exact',
   autoBegin: false,
   playerColour: '#cccccc',
   playerAutoHide: false,
   playerAlpha: 0.85
};
var params = {
 allowfullscreen: true,
 quality: 'best',
 wmode: 'window'
};
swfobject.embedSWF("video.swf", "video", "479", "310", "9.0.0","/video/expressInstall.swf", flashvars, params);
</script>

<div id="video"></div>
wmode=“transparent”
可能会有所帮助。
您也可以在flash应用程序中应用掩码来隐藏条,但如果独立FP中不存在此问题,请注意-这是由于插入HTML/js造成的,因此应该予以修复。

scale:“noScale”
也很有用(但您必须调整播放器或html容器的大小)

原来我是使用JS缩放flash的,但我真正想要的是flash组件保持其相对于可视/flash窗格边缘的位置。我不想让它们伸展或扭曲

这必须通过使用ActionScript绘制控件等,而不是使用默认的播放器外观,以编程方式完成。看看开源播放器的源代码,你就会明白我的意思。当播放器处于全屏模式时,这也可以防止控件出现模糊


此外,视频源在视频上方和下方似乎都有一些小条,但没有我试图在此处删除的条那么大。

我假设flv本身没有任何黑条,您可以从IDE测试swf,并且它在每个缩放模式下都能正确显示?更改flashVars中的scalemode时会发生什么情况?@Martin Coulthurst:没错,IDE中没有黑色条。但是,当使用FlashVar时,
精确匹配
保持纵横比
似乎做了同样的事情。他们都加了黑条。这就好像
精确匹配
被视为
保持纵横比
。设置为
NO_SCALE
时,尽管视频比视口大,并且控件不可见,但您可以预期。
stop();

/**
 * Embedding this player is simple with the following flashvars API
 * playerSkinURL   = the url to the skin to use eg. SkinUnderPlayStopSeekMuteVol.swf
 * videoURL        = the url to the video FLV file
 * previewImageURL = the url of the image to use for the preview image (43px less than total height)
 * scaleMode       = scale mode of the player
 *        - exact (default) = fit to player dimensions exactly
 *        - no              = use FLV original dimensions
 *                     - aspect    = scale the video whilst maintaining aspect ratio
 * autoBegin       = automatically start playing the video as soon as it is ready (true or false) default = false
 * playerColour    = the colour of the bezel default = 0x47ABCB
 * playerAlpha     = the alpha transparency of the bezel default = 0.85
 * playerAutoHide  = whether to hide the bezel when the mouse is not over it (boolean true or false)
 */
import fl.video.VideoEvent;
import fl.video.VideoScaleMode;
import fl.video.LayoutEvent;
var flashVars;
var imageLoader:Loader;

var playerSkin:String = 'SkinUnderPlayStopSeekMuteVol.swf';
var videoURL:String = '';
var previewImage:String = '';
var previewImageLoader:Loader = new Loader();
var scaleMode:String = 'exact';
var autoBegin:Boolean = false;
var playerColour:uint = 0xCCCCCC;
var playerAlpha:Number = 0.85;
var playerAutoHide:Boolean = false;

/**
 * Action functions
 */
function populateLocalVars() {
 flashVars = root.loaderInfo.parameters;
 if(null != flashVars['playerSkinURL']) {
  playerSkin = flashVars['playerSkinURL'];
 }
 if(null != flashVars['videoURL']) {
  videoURL = flashVars['videoURL'];
 }
 if(null != flashVars['previewImageURL']) {
  previewImage = flashVars['previewImageURL'];
 }
 if(null != flashVars['scaleMode'] && 
    ('no' == flashVars['scaleMode'] || 'aspect' == flashVars['scaleMode'] || 'exact' == flashVars['scaleMode'])) {
  scaleMode = flashVars['scaleMode'];
 }
 if(null != flashVars['autoBegin']) {
  if('true' == flashVars['autoBegin']) {
   autoBegin = true;
  } else {
   autoBegin = false;
  }
 }
 if(null != flashVars['playerColour']) {
  if('#' == flashVars['playerColour'].substring(0, 1)) {
   playerColour = uint('0x' + flashVars['playerColour'].substring(1, flashVars['playerColour'].length));
  } else if('x' == flashVars['playerColour'].substring(1, 2)) {
   playerColour = uint(flashVars['playerColour']);
  }
 }
 if(null != flashVars['playerAlpha']) {
  playerAlpha = Number(flashVars['playerAlpha']);
 }
 if(null != flashVars['playerAutoHide']) {
  if('true' == flashVars['playerAutoHide']) {
   playerAutoHide = true;
  } else {
   playerAutoHide = false;
  }
 }
}
function initPlayer() {
 populateLocalVars();

 setScaleMode();
 setPlayerColour();
 setPlayerAlpha();
 setPlayerAutoHide();

 setPlayerSkin();
 loadPreview();
 resizePlayer();

 loadMovieIntoPlayer();

 // this must come after the video is loaded!
 setPlayerAutoBegin();
}

/**
 * Set FLVPlayBack component parameters
 */
function setScaleMode() {
 if('no' == scaleMode) {
  player.scaleMode = VideoScaleMode.NO_SCALE;
 } else if('aspect' == scaleMode) {
  player.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
 } else if('exact' == scaleMode) {
  player.scaleMode = VideoScaleMode.EXACT_FIT;
 }
}
function setPlayerAutoBegin() {
 player.autoPlay = Boolean(autoBegin);
}
function setPlayerColour() {
 player.skinBackgroundColor = uint(playerColour);
}
function setPlayerAlpha() {
 player.skinBackgroundAlpha = Number(playerAlpha);
}
function setPlayerAutoHide() {
 player.skinAutoHide = Boolean(playerAutoHide);
}
function setPlayerSkin() {
 player.skin = playerSkin;
}
function loadMovieIntoPlayer() {
 player.load(videoURL);
}

/**
 * Operate on video
 */
function playMovie() {
    player.play();
 hidePreview();
}
function resetPlayHead() {
 player.seek(0);
}
function stopMovie() {
 player.stop();
}

/**
 * Preview image related
 */
function loadPreview() {
 previewImageLoader.load(new URLRequest(previewImage));
 showPreview();
}
function hidePreview() {
 preview.visible = false; 
}
function showPreview() {
 preview.visible = true;
}

/**
 * Cause player to fit the defined area of the object html tag
 */
function resizePlayer() {
 player.width = stage.stageWidth;
 player.height = stage.stageHeight - 43;

 // now if the preview image has been loaded when can set it to the same
 // width and height as the player
 previewImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, previewImageLoadedEventHandler);
}
function resizePreview() {
 preview.width = player.width;
 preview.height = player.height;

 preview.x = player.x;
 preview.y = player.y;
}

/**
 * Event handling functions
 */
function loaderCompleteEventHandler(event:Event) {
 stage.addEventListener(Event.RESIZE, stageSizeEventHandler);
 stage.dispatchEvent(new Event(Event.RESIZE));
}
function beginPlayingEventHandler(event:Event):void {
 hidePreview();
}
function finishPlayingEventHandler(event:Event):void {
 resetPlayHead();
 showPreview();
}
function previewClickedEventHandler(event:Event):void {
 playMovie();
}
function previewImageLoadedEventHandler(event:Event):void {
 preview.addChild(previewImageLoader);
 resizePreview();
}
function stageSizeEventHandler(event:Event):void {
 if (stage.stageHeight > 0 && stage.stageWidth > 0) {
  stage.removeEventListener(Event.RESIZE, stageSizeEventHandler);
  initPlayer();
 }
}
function playerHasBeenResizedEventHandler(event:Event):void {
 resizePreview();
}

/**
 * Event bindings
 */
this.loaderInfo.addEventListener(Event.COMPLETE, loaderCompleteEventHandler);
player.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, beginPlayingEventHandler);
player.addEventListener(VideoEvent.COMPLETE, finishPlayingEventHandler);
player.addEventListener(LayoutEvent.LAYOUT, playerHasBeenResizedEventHandler);
preview.addEventListener(MouseEvent.CLICK, previewClickedEventHandler);