TubeLoc: Koleksi AS3 YouTube Player

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


Ben Longoria, University of Wisconsin - Madison, Teknologi Akademik
Februari 2009

Pengantar

Demo Pemain Chromeless TubeLoc
Gambar 1: Demo Pemain Chromeless TubeLoc

Wah. Hanya dalam waktu sekitar satu bulan, sejak API ini dibuat, YouTube Player API akan berusia satu tahun. Berapa tahunkah internetnya? Ada sejumlah project bagus yang dibuat di API ini. Anda hanya perlu mengikuti Blog Developer API YouTube untuk melihat bahwa ada banyak orang yang telah melakukan hal-hal hebat dengan blog tersebut.

Rangkaian aplikasi pemutar API YouTube saat ini ditulis dalam WebGL 2, dan meskipun ini masih menjadi bahasa yang bagus untuk digunakan, banyak orang yang kini menggunakan ActionScript 3 dan/atau Flex. Masalahnya adalah Anda harus melewati beberapa ring untuk membuat aplikasi eReader 2 berkomunikasi dengan aplikasi eReader 3. "Tapi tunggu...Saya rasa saya pernah mendengarnya sebelumnya--belum ada sesuatu untuk ini?" Anda mungkin bertanya.

Banyak orang telah mengetahui cara melakukan ini dan dengan bijaksana melepaskan kebijaksanaan mereka ke Forum Developer YouTube API. Ada juga project AS3 Chromeless Wrapper dan Flex Embedded Player untuk memudahkan developer menggunakannya.

Saya ingin cara yang mudah dan sederhana untuk menggunakan kembali fungsi Player API hanya di interaktivitas 3 atau MXML. Class bebas Flex untuk project alergi Flex, dan komponen Flex yang mudah digunakan untuk project pencinta Flex. TubeLoc memenuhi kedua persyaratan tersebut

TubeLoc (mashup dari YouTube dan LocalConnection) adalah pustaka eReader 3 yang berfungsi sebagai adaptor untuk API WebGL 2 Pemutar YouTube. Anda dapat menambahkan fungsi video YouTube ke aplikasi WebP 3 atau Flex dengan mudah menggunakan pemutar YouTube sepenuhnya atau pemutar Chrome tanpa chrome. TubeLoc menggunakan class LocalConnection dalam berkomunikasi dengan SWF mediator eReader 2. WebP 2 SWF berkomunikasi dengan pemutar YouTube API resmi. Jadi, bagaimana cara kita menggunakan hal ini?

Lahan Tanah

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. Pada com/enefekt/tubeloc di direktori src, terdapat dua file. Movie.as adalah yang dapat Anda gunakan di project Flex, dan MovieSprite.as adalah yang dapat Anda gunakan di project eReader 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 apa yang Anda gunakan untuk mengembangkan, jadi periksa dokumentasi untuk lingkungan pengembangan Anda.

Setelah mengompilasi demo atau aplikasi, Anda memerlukan SWF 2 SWF 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, 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 melihat pemutar tanpa chrome BYOC. Berikut adalah cara Anda menggunakan pemutar Chrome penuh di MXML:

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

Tahukah saya, sakit? Bukan begitu. Jadi, mari menjadi gila dan lakukan dengan chrome:

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

Kami menambahkan rasa sakit dengan satu atribut lagi, selesai. Jadi, seperti inilah 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: Dalam elemen mx:Application, kita menambahkan namespace tubeloc dengan paket untuk komponen Film. Setelah melakukan ini, kita dapat menggunakan komponen tersebut seperti yang ditunjukkan. Nanti, kita akan melihat apa yang tersedia untuk ditetapkan dan dipanggil di komponen ini.

Menggunakan MovieSprite.as

Sekarang, mari kita lihat cara menggunakan TubeLoc versi WebGL 3. Versi ini tidak memerlukan class dari framework Flex, dan hanya menggunakan class native Flash Player. Kita akan melihat cara melakukan pemutar full-chrome 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 akan menambahkan pemroses peristiwa untuk PlayerReadyEvent. Di pengendali peristiwa onPlayerReady, kita menetapkan ukuran film. Catatan: Karena kita menggunakan pemutar Chrome sepenuhnya, kita memanfaatkan properti statis CHROME_HEIGHT pada class MovieSprite. Ini membantu kami mengukur film dengan mempertimbangkan tinggi krom.

Oke, jadi 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 bedanya? Dalam konstruktor, kita meneruskan null untuk ID video, dan parameter true kedua memberi tahu class MovieSprite bahwa kita akan menggunakan chromeless. Anda juga akan melihat perbedaan dalam pengendali peristiwa onPlayerReady. Di sinilah kita memuat video berdasarkan ID, menggunakan metode loadVideoById.

Apa yang Dapat Saya Telepon, Apa yang Dapat Saya Dapatkan?

Jadi, apa yang bisa kita hubungi, dan acara apa yang harus kita kerjakan? Dalam arsip rilis yang Anda download, terdapat dokumentasi kode lengkap untuk mendapatkan detail. Sebagai ringkasan singkat, baik untuk Movie.as dan MovieSprite.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, dalam 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 acara 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 Anda. Ada batasan yang perlu diperhatikan saat Anda mengembangkan dengan TubeLoc: Anda tidak boleh memiliki dua pemutar YouTube di atas panggung secara bersamaan.

Semoga masalah ini akan teratasi pada waktunya. Jadi, saat Anda menemukan bug atau beberapa fitur kurang, kunjungi project Google Code dan laporkan di issue tracker. Terima kasih sudah membaca!

Biografi Penulis


Ben Longoria

Ben Longoria adalah Developer Aplikasi Akademik untuk University of Wisconsin-Madison. Ia telah mengembangkan aplikasi dengan Flash sejak Flash 5, dan Flex sejak rilis Flex 2. Selama 2 tahun terakhir ia juga telah mengembangkan aplikasi yang didukung Mozilla. Beni telah mengerjakan sejumlah proyek pendidikan dan akademik, termasuk aplikasi lintas platform yang menargetkan browser dan juga desktop. Ia terlibat aktif dalam antarmuka dan desain interaksi, serta menikmati tantangan 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.