2013-07-11 172 views
0

我在Flash中製作了一個可用的AS3代碼來顯示和播放漸進式視頻。我正在使用JavaScript動態地將其嵌入到指定寬度和高度的頁面中。嵌入對象的with和height是正確的,但視頻內容變得比它的容器大。那麼如何在AS3中調整視頻的大小以匹配其在HTML中嵌入的容器對象?調整Flash動作腳本中的視頻對象3

AS3代碼:

import flash.net.NetStream; 
import flash.media.Video; 
import flash.net.NetConnection; 
import flash.events.MouseEvent; 

var nc, ns, vd, st; 
var isLoaded = false; 
var isPlaying = false; 
var vW = ExternalInterface.call('video.w'); 
var vH = ExternalInterface.call('video.h'); 

function video(w,h){ 
    nc = new NetConnection(); nc.connect(null); 
    ns = new NetStream(nc); 
    vd = new Video(w,h); 

    ns.client = this; 
    vd.attachNetStream(ns); 
    stage.addChild(vd); 
} 

function playpause(e){ 
    if(isLoaded == false){ 
     ns.play('http://localhost.com/project/vid/sample_1.mp4'); 
     isLoaded = true; 
     isPlaying = true; 
    } 
    else{ 
     if(isPlaying == false){ 
      ns.resume(); 
      isPlaying = true; 
     } 
     else{ 
      ns.pause(); 
      isPlaying = false; 
     } 
    } 
} 
video(vW,vH); 
stage.addEventListener(MouseEvent.CLICK, playpause); 

HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>video</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <script> 
      function player(container,w,h){ 
       var container = document.getElementById(container); 
       var flashHTML = '<object type="application/x-shockwave-flash" data="video.swf" width="'+w+'" height="'+h+'"><param name="movie" value="video.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#cccccc" /><param name="play" value="true" /><param name="loop" value="true" /><param name="wmode" value="window" /><param name="menu" value="true" /><param name="allowScriptAccess" value="sameDomain" /><a href="http://www.adobe.com/go/getflash"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></object>'; 

       container.innerHTML = flashHTML; 

       this.w = function(){return w} 
       this.h = function(){return h} 
      } 
     </script> 
    </head> 
    <body> 
     <div id="flashContent"></div> 
     <script> 
      var video = new player('flashContent',853,480); 
     </script> 
    </body> 
</html> 

回答

0

你需要調用video.w和video.h的功能,因此它們返回一個值。

var vW = ExternalInterface.call('video.w()'); 
var vH = ExternalInterface.call('video.h()'); 

應該工作

+1

丹,這不是正確的答案,因爲支架不要在此情況下,無所謂。 – Gio

+0

我經過幾個小時的追蹤才找出答案。我有一個與視頻相同的尺寸爲'640 x 360'的舞臺。如果我動態調整比舞臺更大的視頻,問題就會發生。在應用新的尺寸更改後,視頻擴展爲「853 x 480」,而舞臺仍保留「640 x 360」作爲原始視頻。設置舞臺的scalemode和重新定位解決了視頻顯示問題。 >> stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; –

+0

@Gio只是好奇,我在Chrome中的控制檯將返回該函數本身,如果我沒有()後運行它。這是一個僅限鉻的行爲嗎?邁克爾,很高興你知道了。我之前在舞臺比例設置中遇到過類似的問題,對不起,我沒有早點想到。 – dprogramz