First of all, hi everyone I’m new here.
I’m creating a small application on my uni course.
For some reason I’ve decided I want a customized video player.
Somehow I managed to get one working. My tutor “suggested” to add a thumbnail playlist to it. But he didn’t point out where to start. I’ve looked at various articles/tutorials etc. Nothing works.
In the end I managed to get tileList component to display the images. The problem is, I need to load the content into that component from a xml file. In addition, I’d like to be able to click on each image so that the videoplayer next to it plays the appropriate video.
This is my as3 code:
//----------------------video-player--------------//
var numVids = 0;
var currentVid = 0;
var vidXML = new XML();
var vidXMLURLreq = new URLRequest("videos.xml");
var vidXMLLoader = new URLLoader(vidXMLURLreq);
vidXMLLoader.addEventListener("complete", xmlLoaded);
vidXMLLoader.addEventListener("ioError", xmlLoadFail);
nextBtn.addEventListener("click", loadNextVid);
prevBtn.addEventListener("click", loadPrevVid);
stopBtn.addEventListener("click", stopVid);
playBtn.addEventListener("click", playVid);
pauseBtn.addEventListener("click", pauseVid);
vidPlayer.autoRewind = true;
vidPlayer.addEventListener("complete", loadNextVid);
vidList.addEventListener("change", loadSelectedVid);
function xmlLoaded(eventObj)
{
try {
vidXML = XML(vidXMLLoader.data);
numVids = vidXML.children().length();
loadList();
loadVid();
}
catch(error){
trace(error.message);
}
}
function xmlLoadFail(eventObj){
trace("file failed to load");
}
function loadList(){
for (var i = 0; i < numVids; i++){
var vidTitle = vidXML.Video*.Title.toString();
var listItem = new Object();
listItem.label = vidTitle;
listItem.data = vidTitle;
vidList.addItem(listItem);
}
}
function loadVid(){
titleTxt.text = vidXML.Video[currentVid].Title.toString();
var videoFile = vidXML.Video[currentVid].VideoFile.toString();
vidPlayer.source = "videos/" + videoFile;
var imageLoader = new Loader();
var imageFile = vidXML.Video[currentVid].Image.toString();;
var ImageURLreq = new URLRequest("thumbs/" + imageFile);
imageLoader.load(ImageURLreq);
imageHolder.addChild(imageLoader);
vidList.selectedIndex = currentVid;
}
function loadSelectedVid(eventObj){
currentVid = vidList.selectedIndex;
loadVid();
}
function loadNextVid(eventObj){
currentVid ++;
if(currentVid >= numVids){
currentVid = 0;
}
loadVid();
}
function loadPrevVid(eventObj){
currentVid --;
if(currentVid < 0){
currentVid = numVids - 1;
}
loadVid();
}
function stopVid(eventObj){
vidPlayer.stop();
}
function playVid(eventObj){
vidPlayer.play();
}
function pauseVid(eventObj){
vidPlayer.pause();
}
//----------------------------------------------//
//----------------tileList-----------------------//
import fl.controls.TileList;
import fl.controls.ScrollBarDirection
import flash.events.Event;
// create TileList instance
var myTileList:TileList = new TileList();
// create TextFormat object for labels
var tf:TextFormat = new TextFormat();
//set textFormat font, color, and size
tf.font = "Arial";
tf.bold = true;
tf.color = 0xffffff;
tf.size = 15;
// add content to the TileList
//This section of the code needs to be changed so that the data is loaded from an external xml file.
myTileList.addItem({label:"Iron Man", source:"thumbs/videothumb1.jpg"});
myTileList.addItem({label:"CATERHAM", source:"thumbs/videothumb2.jpg"});
myTileList.addItem({label:"GAMEFest", source:"thumbs/videothumb3.jpg"});
myTileList.addItem({label:"The Punisher", source:"thumbs/videothumb4.jpg"});
myTileList.addItem({label:"Transformers 1", source:"thumbs/videothumb5.jpg"});
myTileList.addItem({label:"Pulp Fiction", source:"thumbs/videothumb6.jpg"});
myTileList.addItem({label:"Transformers 3", source:"thumbs/videothumb7.jpg"});
myTileList.addItem({label:"House M.D.", source:"thumbs/videothumb8.jpg"});
myTileList.addItem({label:"Cafe Tomorrow", source:"thumbs/videothumb9.jpg"});
myTileList.addItem({label:"2012", source:"thumbs/videothumb10.jpg"});
myTileList.addItem({label:"Appleseed", source:"thumbs/videothumb11.jpg"});
myTileList.addItem({label:"Fearless", source:"thumbs/videothumb12.jpg"});
myTileList.addItem({label:"Stargate SG1", source:"thumbs/videothumb13.jpg"});
myTileList.direction = ScrollBarDirection.VERTICAL; // set scroll direction
//column and row values
myTileList.columnWidth = 150;
myTileList.rowHeight = 115;
myTileList.columnCount = 3;
myTileList.rowCount = 5;
myTileList.width = 470;
myTileList.height = 345;
//add onto the stage and position
addChild(myTileList);
myTileList.move(475,307);
// set style for labels
myTileList.setRendererStyle("textFormat", tf);
myTileList.setRendererStyle("imagePadding", 2);
// set the background skin
myTileList.setStyle("skin", darkBackground);
//set the cell renderer
myTileList.setStyle("cellRenderer", MyRenderer);
myTileList.addEventListener(MouseEvent.MOUSE_DOWN, tileList_MouseDown);
function tileList_MouseDown(evt:MouseEvent):void{
trace(myTileList.selectedItem.label + " was clicked");
}
This is my xml file for the thumbnails:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<thumbLibrary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<thumbs>
<label>Iron Man 2</label>
<imageFile>videothumb1.jpg</imageFile>
</thumbs>
<thumbs>
<label>Autosport</label>
<imageFile>videothumb2.jpg</imageFile>
</thumbs>
<thumbs>
<label>GAMEFest</label>
<imageFile>videothumb3.jpg</imageFile>
</thumbs>
<thumbs>
<label>The Punisher</label>
<imageFile>videothumb4.jpg</imageFile>
</thumbs>
<thumbs>
<label>Transformers 1</label>
<imageFile>videothumb5.jpg</imageFile>
</thumbs>
<thumbs>
<label>Pulp Fiction</label>
<imageFile>videothumb6.jpg</imageFile>
</thumbs>
<thumbs>
<label>Transformers 3</label>
<imageFile>videothumb7.jpg</imageFile>
</thumbs>
<thumbs>
<label>House MD</label>
<imageFile>videothumb8.jpg</imageFile>
</thumbs>
<thumbs>
<label>Cafe Tomorrow</label>
<imageFile>videothumb9.jpg</imageFile>
</thumbs>
<thumbs>
<label>2012</label>
<imageFile>videothumb10.jpg</imageFile>
</thumbs>
<thumbs>
<label>Appleseed</label>
<imageFile>videothumb11.jpg</imageFile>
</thumbs>
<thumbs>
<label>Fearless</label>
<imageFile>videothumb12.jpg</imageFile>
</thumbs>
<thumbs>
<label>Stargate SG1</label>
<imageFile>videothumb13.jpg</imageFile>
</thumbs>
</thumbLibrary>
Can anyone help me with that tileList component? I’m quite desperate to get it working.
Even if it throws some errors I don’t mind as long as it’ll somehow work.
I’ve attached an image of the layout to better clarify the situation.
Thanks to anyone who’s willing to help.