topical media & game development
student-mashup-youtube-video.mx
student-mashup-youtube-video.mx
[swf]
[flash]
flex
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
xmlns:flvc="*"
xmlns:nlcontrols="nl.fxc.controls.*"
xmlns:controls="com.fxcomponents.controls.*"
initialize="Security.loadPolicyFile('http://i.ytimg.com/crossdomain.xml')"
backgroundColor="black"
creationComplete="serviceSelectedInt=1"
layout="vertical" >
<mx:Style>
DataGrid {
backgroundAlpha: 0.5;
headerColors: #000000, #999999;
letterSpacing: 0;
rollOverColor: #000000;
textRollOverColor: #ffffff;
borderThickness: 0;
textIndent: 5;
headerStyleName: "mydataGridHeaderStyle";
}
.mydataGridHeaderStyle {
color: #ffffff;
}
TextInput {
backgroundColor: #cccccc;
color: #000000;
textAlign: left;
dropShadowEnabled: true;
dropShadowColor: #666666;
}
Application {
backgroundImage: Embed(source="student-mashup-youtube-assets-backgrounds-GU200-350A.jpg");
color: #ffffff;
}
black-face {
src:url("student-mashup-youtube-assets-arial.ttf");
font-family: Arial;
}
</mx:Style>
<mx:Script>
<![CDATA[
/*
Algemene opmerking: in onderstaande code worden integers
gebruikt om services aan te duiden.
1= Youtube
2= AOL
3= Yahoo
*/
//import FLVConstructor;
import mx.collections.XMLListCollection;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
namespace atom = "http://www.w3.org/2005/Atom";
namespace media = "http://search.yahoo.com/mrss/";
use namespace atom;
use namespace media;
[Bindable]private var query:String;
[Bindable]private var ytQuery:String;
[Bindable]private var serviceSelectedInt:int;
[Bindable]private var serviceSelectedString:String;
[Bindable]private var youtubeArray:XMLListCollection;
[Bindable]private var aolArray:ArrayCollection;
[Bindable]private var yahooArray:ArrayCollection;
private function selectService(event:Event):void {
datagridViewstack.selectedIndex=event.currentTarget.selectedIndex;
if(event.currentTarget.selectedItem.int==1){
serviceSelectedInt=1;
youtube.send();
}
else if(event.currentTarget.selectedItem.int==2){
serviceSelectedInt=2;
if (dg_youtube!=null){
aol.send();
}
}
else //if(event.currentTarget.selectedItem.int==3){
serviceSelectedInt=3;
yahoo.send();
}
private function DataHandler(event:ResultEvent,service:int):void
{
if(service==1){
//youtubeArray = event.result.rss.channel.item;
}else if(service==2){
aolArray = event.result.Response.VideoSet.Video;
}else if(service==3){
yahooArray = event.result.ResultSet.Result;
}
}
private function faultHandler(event:mx.rpc.events.FaultEvent):void
{
var faultInfo:String= "fault description:" + "\n\n";
faultInfo+="fault.faultString:" + event.fault.faultString+"\n\n";
mx.controls.Alert.show(faultInfo, "Fault Information");
var eventInfo:String="event target:" + event.target + "\n \n";
eventInfo += "event type:" + event.type + "\n\n";
mx.controls.Alert.show(eventInfo, "Event Information");
}
private function fillGrid():void
{
//sla de zoekqueries op in var
query=searchBox.text;
ytQuery="'"+searchBox.text+"'";
//vul de HTTPRequests
youtube.send();
aol.send();
yahoo.send();
}
private function onTimerComplete(evt:Event):void
{
fxVideoDisplay.source=flvConstructor.resultURL
}
private function clickHandler(event:MouseEvent):void
{
if(serviceSelectedInt==1){
//zorg ervoor dat youtubeUrl naar flv verwijst ipv swf
//flvConstructor.inputURL=youtubeUrl.text;
flvConstructor.inputURL=dg_youtube.selectedItem.group.content[0].@url
flvConstructor.startLoading();
var minuteTimer:Timer = new Timer(1000, 1);
minuteTimer.start();
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
//ytResult=flvConstructor.resultURL;
//fxVideoDisplay.source=ytResult;
}
else if(serviceSelectedInt==2){
//fxVideoDisplay.source=aolUrl.text;
fxVideoDisplay.source=dg_yahoo.selectedItem.videoUrl;
}
else //if(serviceSelectedInt==3)
//fxVideoDisplay.source=yahooUrl.text;
fxVideoDisplay.source=dg_aol.selectedItem.Url;
}
]]>
</mx:Script>
<flvc:student_mashup_youtube_components_FLVConstructor id="flvConstructor" />
<mx:HBox id="menu" height="150" width="787">
<mx:Image source="student-mashup-youtube-assets-logo-white-small.png" />
<mx:TextInput id="searchBox" enter="fillGrid()"/>
<mx:Button label="Search" id="searchButton" click="fillGrid()"/>
<mx:ComboBox
change="selectService(event)"
>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:Object label="Youtube" int="1"/>
<mx:Object label="AOL" int="2"/>
<mx:Object label="Yahoo" int="3"/>
</mx:ArrayCollection>
</mx:dataProvider>
</mx:ComboBox>
</mx:HBox>
<mx:HTTPService id="youtube"
url="http://gdata.youtube.com/feeds/videos?format=1&start-index=1&max-results=20&alt=rss&vq={ytQuery}"
fault="faultHandler(event)"
resultFormat="e4x"
result="DataHandler(event,1)"
/>
<mx:HTTPService id="aol"
url="http://xml.truveo.com/apiv3?appid=1x1jhj64466mi12ia&method=truveo.videos.getVideos&query=:{query}"
fault="faultHandler(event)"
result="DataHandler(event,2)"
/>
<mx:HTTPService id="yahoo"
url="http://search.yahooapis.com/VideoSearchService/V1/videoSearch?appid=YahooDemo&query={query}&results=20"
fault="faultHandler(event)"
result="DataHandler(event,3)"
/>
<mx:HBox>
<mx:VBox>
<mx:Label text="{fxVideoDisplay.state}"/>
<controls:FXVideo id="fxVideoDisplay"
enableSmoothing="true"
autoPlay="true"
width="480"
height="360"
bufferTime="0"
/>
</mx:VBox>
<mx:VBox>
<mx:ViewStack id="datagridViewstack">
<mx:VBox id="YoutubeView">
<mx:DataGrid id="dg_youtube"
click="clickHandler(event)"
dataProvider="{youtube.lastResult.channel.item}"
width="300"
height="400"
>
<mx:columns>
<mx:DataGridColumn headerText="YouTube Results" dataField="title"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
<mx:VBox id="AOLView">
<mx:DataGrid id="dg_aol"
click="clickHandler(event)"
dataProvider="{aol.lastResult.Response.VideoSet.Video}"
width="300"
height="400"
>
<mx:columns>
<mx:DataGridColumn headerText="AOL Results" dataField="title"/>
<mx:DataGridColumn headerText="AOL Media Format" dataField="formats"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
<mx:VBox id="YahooView">
<mx:DataGrid id= "dg_yahoo"
click="clickHandler(event)"
dataProvider="{yahoo.lastResult.ResultSet.Result}"
width="300"
height="400"
>
<mx:columns>
<mx:DataGridColumn headerText="Yahoo Results" dataField="Title"/>
<mx:DataGridColumn headerText="Yahoo Media Format" dataField="FileFormat"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:ViewStack>
<!--<mx:Image source="{dg_aol.selectedItem.thumbnailUrl}"/> -->
</mx:VBox>
</mx:HBox>
</mx:Application>
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.