
youtube flash api 官方發布已經有段時間了,但資質不夠一直沒看懂,最近在網路上有找到比較能理解的範例之後,終於有小小的成果了...只不過面版並沒有認真的設計,參考用的加減看看囉!
as3語法如下:
import com.greensock.*;
//指定YouTube Video ID
var myVideoID:String = "JwWML6fDnXw";
//自動播放:true, 不自動播放:false
var autoPlayVideo:Boolean = false;
// 用控制面版:true, 不用控制面版:false
var useControlPanelState:Boolean = false;
//重覆播放:true, 不重覆播放:false
var loopVideoState:Boolean = true;
//聲音大小,最大100,最小:0 (無聲)
var myVolume:Number = 50;
//有聲:false, 無聲:true
var muteVideoState:Boolean = false;
//Below Functions Are Edited By Perr Tang
var autoPlayState:String;
if (autoPlayVideo == true)
{
autoPlayState = "&autoplay=1";
}
else
{
autoPlayState = "";
}
var myVideoURL:String;
if (useControlPanelState == true)
{
myVideoURL = "http://www.youtube.com/v/" + myVideoID + "?version=3" + autoPlayState;
}
else if (useControlPanelState == false)
{
myVideoURL = "http://www.youtube.com/apiplayer?version=3&video_id=" + myVideoID + autoPlayState;
}
// The player SWF file on www.youtube.com needs to communicate with your host
// SWF file. Your code must call Security.allowDomain() to allow this
// communication.(設定允許跨網域連到youtube.com)
Security.allowDomain("www.youtube.com");
// This will hold the API player instance once it is initialized.;
var player:Object;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
//loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3&video_id=YHLWdb55iic&autoplay=1"));
loader.load(new URLRequest(myVideoURL));
function onLoaderInit(event:Event):void
{
addChild(loader);
loader.content.addEventListener("onReady", onPlayerReady);
loader.content.addEventListener("onError", onPlayerError);
loader.content.addEventListener("onStateChange", onPlayerStateChange);
loader.content.addEventListener("onPlaybackQualityChange",
onVideoPlaybackQualityChange);
}
function onPlayerReady(event:Event):void
{
// Event.data contains the event parameter, which is the Player API ID
trace("player ready:", Object(event).data);
// Once this event has been dispatched by the player, we can use
// cueVideoById, loadVideoById, cueVideoByUrl and loadVideoByUrl
// to load a particular YouTube video.
player = loader.content;
// 指定影片大小Set appropriate player dimensions for your application
player.setSize(580, 435);
// 指定影片位置;
player.x = 8;
player.y = 8;
player.alpha=0;
TweenLite.to(player, 0.5, {alpha:1});
player.setVolume(myVolume);
if (muteVideoState == true)
{
player.mute();
}
}
function onPlayerError(event:Event):void
{
// Event.data contains the event parameter, which is the error code
trace("player error:", Object(event).data);
}
function onPlayerStateChange(event:Event):void
{
// Event.data contains the event parameter, which is the new player state
trace("player state:", Object(event).data);
if (Object(event).data == "0")
{
if (loopVideoState == true)
{
player.playVideo();
}
else
{
player.stopVideo();
}
}
}
function onVideoPlaybackQualityChange(event:Event):void
{
// Event.data contains the event parameter, which is the new video quality
trace("video quality:", Object(event).data);
}
//自訂播放按鈕
play_btn.addEventListener(MouseEvent.CLICK, playVid);
function playVid(e:MouseEvent):void
{
player.playVideo();
}
play_btn.buttonMode = true;
//自訂暫停按鈕
pause_btn.addEventListener(MouseEvent.CLICK, pauseVid);
function pauseVid(e:MouseEvent):void
{
player.pauseVideo();
}
pause_btn.buttonMode = true;
//自訂停止按鈕
stop_btn.addEventListener(MouseEvent.CLICK, stopVid);
function stopVid(e:MouseEvent):void
{
player.stopVideo();
}
stop_btn.buttonMode = true;
//自訂靜音按鈕
mute_btn.addEventListener(MouseEvent.CLICK, muteVid);
function muteVid(e:MouseEvent):void
{
player.mute();
}
mute_btn.buttonMode = true;
//自訂恢復音量按鈕
unmute_btn.addEventListener(MouseEvent.CLICK, unmuteVid);
function unmuteVid(e:MouseEvent):void
{
player.unMute();
}
unmute_btn.buttonMode = true;
swf view:http://www.swfcabin.com/open/1312544932
參考範例:
http://www.republicofcode.com/tutorials/flash/as3youtube/
http://benlibra.blogspot.com/2011/03/as3-flashyoutube.html
綜合了二位所提供的語法,我也分享了一下,但目前完整度大概只有70%,希望最後可以研究出進度bar來!
2013.08.13,補上fla原始檔,有需要的朋友請拿去研究~ 下載請點我>>
(按鈕做得很醜,請不要真的拿去專案上使用...)
11 意見:
*** Security Sandbox Violation ***
SecurityDomain 'http://s.ytimg.com/yt/swfbin/watch_as3-vfln2y8gL.swf' 嘗試存取不相容的內容 'file:///D|/1%5Fworks/intro%5F20120112/intro%5F20120112.swf'
請問一下我發布後會一直跳出這個
是正常的嗎?
是正常的,那個可以不用理會他
為什麼我新增一個AS3的檔案把上面的語法貼進去後,撥放出來是空的的?
還是不能直接這樣貼?
sorry我剛學flash所以比較不懂
@eRic
真抱歉,blog留言都沒收到通知,現在才看到留言...
如milkmidi所說的,出現那個訊息是正常的。
flash有擋跨網域,所以as中有這段Security.allowDomain("www.youtube.com");
如果測試時也不想出現那個警告訊息,就可以改成 Security.allowDomain("*");
可以參考:http://blog.raienet.com/443
@milkmidi 竟然還勞駕milkmidi幫我回覆留言,太慚愧了...
趕快來把留言設為審核通知...
@�ΦW 匿名新手你好:這一篇教學我沒寫得很仔細,所以如果你直接貼上語法應該會出現一堆錯誤訊息吧...
你可以留mail我直接給你fla檔。
請問 player = loader.content;
當player 參考了 此物件
去哪能看到此物件所擁有的函式呢?
想去增加一些功能的按鈕
@傑瑞林 你好,你要增加哪些功能?
請問可以增加播放進度表嗎?
另外可以控制從第幾秒開始播嗎?
麻煩你囉謝謝
請問可以增加播放進度表嗎?
另外可以控制從第幾秒開始播嗎?
麻煩你囉謝謝
@���ռ�
進度表那個太難了我不知道~ sorry...
至於第幾秒開始播放這個很簡單,是否你自己有嘗試過了呢?
張貼留言