TubeLoc: Library AS3 Pemutar YouTube

Artikel ini ditulis dan dikirimkan oleh developer eksternal. Tim YouTube API mengucapkan terima kasih kepada Ben Longoria atas waktu dan keahliannya.


Ben Longoria, University of Wisconsin - Madison, Academic Technology
Februari 2009

Pengantar

Demo TubeLoc Chromeless Player
Gambar 1: Demo TubeLoc Chromeless Player

Wow. Hanya dalam waktu sekitar satu bulan, saat ini, YouTube Player API akan berusia satu tahun. Berapa tahun internet? Ada sejumlah project hebat yang dibuat di API. Anda hanya perlu mengikuti Blog YouTube Developer API untuk melihat bahwa ada banyak orang yang telah melakukan hal-hal luar biasa dengan API ini.

Kumpulan aplikasi pemutar YouTube API saat ini ditulis dalam ActionScript 2, dan meskipun bahasa ini masih bagus untuk digunakan, banyak orang kini menggunakan ActionScript 3 dan/atau Flex. Masalahnya adalah Anda harus melakukan beberapa hal untuk membuat aplikasi ActionScript 2 berkomunikasi dengan aplikasi ActionScript 3. Anda mungkin bertanya, "Tapi tunggu...Saya rasa saya pernah mendengarnya sebelumnya--bukankah sudah ada sesuatu untuk ini?"

Banyak orang telah mengetahui cara melakukannya dan dengan senang hati membagikan keahlian mereka di Forum Developer YouTube API. Ada juga project AS3 Chromeless Wrapper dan Flex Embedded Player untuk mempermudah developer menggunakannya.

Saya menginginkan cara yang mudah dan sederhana untuk menggunakan kembali fungsi Player API hanya di ActionScript 3 atau MXML. Class bebas Flex untuk project yang tidak menyukai Flex, dan komponen Flex yang mudah digunakan untuk project yang menyukai Flex. TubeLoc memenuhi kedua persyaratan

TubeLoc (gabungan YouTube dan LocalConnection) adalah library ActionScript 3 yang berfungsi sebagai adaptor untuk YouTube ActionScript 2 Player API. Anda dapat dengan mudah menambahkan fungsi video YouTube ke aplikasi ActionScript 3 atau Flex dengan pemutar YouTube dengan bingkai penuh atau tanpa bingkai. TubeLoc menggunakan class LocalConnection dalam berkomunikasi dengan SWF mediator ActionScript 2. SWF ActionScript 2 berkomunikasi dengan pemutar YouTube API resmi. Jadi, bagaimana cara menggunakan alat ini?

Kondisi Saat Ini

Pertama, Anda harus mendownload rilis library saat ini dari project Google Code. Setelah mengekstrak arsip zip rilis, Anda akan menemukan direktori as3 di dalamnya. Di bawah ini adalah direktori src yang menyertakan beberapa contoh class. Jangan ragu untuk menggunakannya sebagai titik awal. Di bagian com/enefekt/tubeloc dalam direktori src, terdapat dua file. Movie.as adalah yang dapat Anda gunakan dalam project Flex, dan MovieSprite.as adalah yang dapat Anda gunakan dalam project ActionScript 3. Di com/enefekt/tubeloc/event, ada berbagai class peristiwa untuk berbagai notifikasi yang dapat dikirim dari pemutar.

Sebelum mencoba contoh dalam tutorial ini, pastikan direktori src di direktori as3 berada di jalur class Anda. Proses untuk melakukannya berbeda-beda bergantung pada alat yang Anda gunakan untuk mengembangkan, jadi periksa dokumentasi untuk lingkungan pengembangan Anda.

Setelah mengompilasi demo atau aplikasi, Anda memerlukan SWF ActionScript 2 yang berkomunikasi dengan YouTube Player API. Anda dapat menemukan SWF ini di arsip rilis di sini: as3/lib/as2_tubeloc.swf. Pastikan file tersebut berada di samping file HTML yang menyematkan aplikasi SWF Anda, seperti ini:

my_app/
  my_app.html
  as2_tubeloc.swf
  my_app.swf

Catatan: Anda dapat mengubah jalur ke SWF ini menggunakan properti playerWrapperUrl dengan library.

Menggunakan Movie.as

Mari kita lihat cara menggunakan TubeLoc versi Flex. Kita akan melihat pemutar chrome penuh (dengan semua kontrol) terlebih dahulu, lalu pemutar chromeless BYOC. Berikut cara menggunakan pemutar full-chrome di MXML:

<tubeloc:Movie id="tubelocMovie" width="320" height="240" 
		videoId="GJ1sZBTnbuE" />

Ya, ya, sakit, ya? Bukan begitu. Jadi, mari kita coba tanpa bingkai:

<tubeloc:Movie id="tubelocMovie" width="320" height="240" 
		videoId="GJ1sZBTnbuE" chromeless="true" />

Kami menambahkan satu atribut lagi, itu saja. Jadi, berikut adalah tampilan seluruh file MXML:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
		xmlns:tubeloc="com.enefekt.tubeloc.*">
   
	<!-- TubeLoc Movie Component -->
	<tubeloc:Movie id="tubelocMovie" width="320" height="240" 
			videoId="GJ1sZBTnbuE" chromeless="true" />
	
</mx:Application> 

Catatan: Di elemen mx:Application, kita menambahkan namespace tubeloc dengan paket untuk komponen Film. Setelah melakukannya, kita dapat menggunakan komponen seperti yang ditunjukkan. Nanti kita akan melihat apa yang tersedia untuk ditetapkan dan dipanggil pada komponen ini.

Menggunakan MovieSprite.as

Sekarang mari kita lihat cara menggunakan TubeLoc versi ActionScript 3. Versi ini tidak memerlukan class dari framework Flex, dan hanya menggunakan class native Flash Player. Kita akan melihat cara melakukan pemutar chrome penuh terlebih dahulu, lalu pemutar chromeless. Berikut adalah contoh lengkapnya:

package {
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;

	import com.enefekt.tubeloc.MovieSprite;
	import com.enefekt.tubeloc.event.*;

	[SWF(backgroundColor="#FFFFFF")]
	public class MainChromed extends Sprite {
		private var youtubeMovie:MovieSprite;

		public function MainChromed() {
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			youtubeMovie = new MovieSprite("7tTNOX8jfno");
			youtubeMovie.addEventListener(PlayerReadyEvent.PLAYER_READY, onPlayerReady);
			youtubeMovie.x = 10;
			youtubeMovie.y = 10;
			addChild(youtubeMovie);
		}

		private function onPlayerReady(event_p:PlayerReadyEvent):void {
			youtubeMovie.width = 640;
			youtubeMovie.height = 480 + MovieSprite.CHROME_HEIGHT;
		}
	}
}

Pertama, kita mengimpor class TubeLoc yang diperlukan. Kemudian, di konstruktor, kita membuat instance class MovieSprite, dan meneruskan ID video ke konstruktor MovieSprite. Selanjutnya, kita menambahkan pemroses peristiwa untuk PlayerReadyEvent. Di pengendali peristiwa onPlayerReady, kita menetapkan ukuran film. Catatan: Karena menggunakan pemutar full-chrome, kita memanfaatkan properti statis CHROME_HEIGHT di class MovieSprite. Hal ini membantu kita menentukan ukuran film dengan mempertimbangkan tinggi chrome.

Oke, bagaimana dengan pemutar chromeless?

package {
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
		
	import com.enefekt.tubeloc.MovieSprite;
	import com.enefekt.tubeloc.event.*;
	
	[SWF(backgroundColor="#FFFFFF")]
	public class MainChromeless extends Sprite {
		private var youtubeMovie:MovieSprite;
		
		public function MainChromeless() {
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			youtubeMovie = new MovieSprite(null, true);
			youtubeMovie.addEventListener(PlayerReadyEvent.PLAYER_READY, onPlayerReady);
			youtubeMovie.x = 10;
			youtubeMovie.y = 10;
			addChild(youtubeMovie);
		}
		
		private function onPlayerReady(event_p:PlayerReadyEvent):void {
			youtubeMovie.width = 640;
			youtubeMovie.height = 480;
			youtubeMovie.loadVideoById("7tTNOX8jfno");
		}
	}
}

Jadi, apa perbedaannya? Dalam konstruktor, kita meneruskan null untuk ID video, dan parameter true kedua memberi tahu class MovieSprite bahwa kita tidak akan menggunakan chrome. Anda juga akan melihat perbedaan pada pengendali peristiwa onPlayerReady. Di sinilah kita memuat video berdasarkan ID, menggunakan metode loadVideoById.

What Can I Call, What Do I Get?

Jadi, apa saja yang tersedia untuk dipanggil, dan peristiwa apa yang harus kita gunakan? Dalam arsip rilis yang Anda download, terdapat dokumentasi kode lengkap untuk mendapatkan detailnya. Sebagai ringkasan singkat, untuk Movie.as dan MovieSprite.as, Anda memiliki metode berikut:

seekTo(seconds:Number, allowSeekAhead:Boolean=true):void

setVolume(volume:Number):void

getVolume():Number

unMute():void

mute():void

clearVideo():void

setSize(width:Number, height:Number):void

loadVideoById(videoId:String, startSeconds:Number = 0):void [Chromeless player only] 

cueVideoById(videoId:String, startSeconds:Number = 0):void [Chromeless player only] 

stopVideo():void

playVideo():void

pauseVideo():void

destroy():void

Selain metode ini, di komponen Movie.as, Anda memiliki akses ke properti berikut:

playerReady:Boolean

chromeless:Boolean

videoId:String

stateDescription:String

currentTime:Number 

duration:Number 

videoUrl:String 

videoEmbedCode:String 

volume:Number

Berikut adalah peristiwa yang dapat Anda ikuti. Anda dapat menemukan detail selengkapnya dalam dokumentasi.

onError

onStateChange

onMovieStateUpdate

onMovieProgress

onPlayerReady

onPlayerUnload

Kesimpulan

Semoga artikel ini membantu Anda mengintegrasikan fungsi dan konten YouTube di aplikasi Flash. Ada batasan yang perlu diingat saat Anda mengembangkan dengan TubeLoc: Anda tidak dapat memiliki dua pemutar YouTube di panggung secara bersamaan.

Semoga masalah ini akan diperbaiki pada waktunya. Jadi, jika Anda menemukan bug atau fitur yang tidak ada, buka project Google Code dan laporkan di issue tracker. Terima kasih telah membaca.

Biodata Penulis


Ben Longoria

Ben Longoria adalah Developer Aplikasi Akademik untuk University of Wisconsin-Madison. Ia telah mengembangkan dengan Flash sejak Flash 5, dan Flex sejak rilis Flex 2. Selama 2 tahun terakhir, ia juga telah mengembangkan aplikasi yang didukung Mozilla. Ben telah mengerjakan sejumlah project pendidikan dan akademik, termasuk aplikasi lintas platform yang menargetkan browser dan desktop. Ia berperan aktif dalam desain antarmuka dan interaksi, serta menikmati tantangan dalam membuat software yang dapat digunakan. Anda dapat menemukan blognya di http://enefekt.com/sansbrowser/, dan membaca kontribusinya di InsideRIA.



Lisensi Creative Commons
Karya ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 3.0 Amerika Serikat.