Reputation: 1927
I have a aplication and I want to have as many FLV players(to play only one video each) as I want, controled by XML. I control some variables (skin color, player x and y, etc). My code is working but with some problems, so I need help to optimize my code. One of the problem is on videos fullscreen, I put one video in Fullscreen, and the other goes to full screen...and other problems with skin alpha, autoplay happens too..
My AS3
import fl.video.*;
import flash.events.ProgressEvent;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
var my_videos:XMLList;
var my_total:Number;
var my_player:FLVPlayback;
var player_skin_color:Number;
var player_skin_alpha:Number;
var auto_play:Boolean;
var videoArray:Array = new Array();
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("test.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
var myXML:XML = new XML(e.target.data);
my_videos = myXML.VIDEO;
my_total = my_videos.length();
makePlayer();
positionPlayer();
}
function makePlayer():void {
for (var i:int = 0; i < my_total; i++) {
my_player = new FLVPlayback();
my_player.skin = "SkinOverPlayFullscreen.swf";
my_player.skinBackgroundColor = player_skin_color;
my_player.skinBackgroundAlpha = player_skin_alpha;
my_player.autoPlay = auto_play;
player_skin_color = my_videos[i]. @ PLAYER_SKIN_COLOR;
player_skin_alpha = my_videos[i]. @ PLAYER_SKIN_ALPHA;
auto_play = my_videos[i]. @ VIDEO_AUTOPLAY;
addChild(my_player);
videoArray.push(my_player);
my_player.source = my_videos[i]. @ URL;
}
}
function positionPlayer():void {
for (var i:int = 0; i < my_total; i++)
{
videoArray[i].x = my_videos[i] . @PLAYER_X;
videoArray[i].y = my_videos[i] . @PLAYER_Y;
videoArray[i].width = my_videos[i] . @PLAYER_WIDTH;
videoArray[i].height = my_videos[i] . @PLAYER_HEIGHT;
}
}
My XML
<?xml version="1.0" encoding="utf-8"?>
<content>
<VIDEO PLAYER_X="450" PLAYER_Y="0" PLAYER_WIDTH="400" PLAYER_HEIGHT="300" PLAYER_SKIN_COLOR="0x0000FF" PLAYER_SKIN_ALPHA="1" VIDEO_AUTOPLAY="true" URL="test.flv"></VIDEO>
<VIDEO PLAYER_X="0" PLAYER_Y="0" PLAYER_WIDTH="400" PLAYER_HEIGHT="300" PLAYER_SKIN_COLOR="0x333333" PLAYER_SKIN_ALPHA="1" VIDEO_AUTOPLAY="true" URL="test2.flv"></VIDEO>
</content>
UPDATE:
import flash.display.StageDisplayState;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
function goFullScreen():void
{
if (stage.displayState == StageDisplayState.NORMAL) {
stage.displayState=StageDisplayState.FULL_SCREEN;
} else {
stage.displayState=StageDisplayState.NORMAL;
}
}
//GREENSOCK LIQUID LAYOUT
var ls:LiquidStage = new LiquidStage(this.stage,900,600,900,600);
ls.attach(video_container_mc, ls.CENTER, false, true, 0);
Upvotes: 0
Views: 1272
Reputation: 3642
import fl.video.*;
import flash.events.ProgressEvent;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
var my_videos:XMLList;
var my_total:Number;
var player_skin_color:Number;
var player_skin_alpha:Number;
var auto_play:Boolean;
var videoArray:Array = new Array();
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("test.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
var myXML:XML = new XML(e.target.data);
my_videos = myXML.VIDEO;
my_total = my_videos.length();
makePlayer();
positionPlayer();
}
function makePlayer():void {
for (var i:int = 0; i < my_total; i++) {
var my_player:FLVPlayback = new FLVPlayback();
my_player.name = "FLVplayer_" + i;
my_player.skin = "SkinOverPlayFullscreen.swf";
player_skin_color = my_videos[i].@PLAYER_SKIN_COLOR;
player_skin_alpha = my_videos[i].@PLAYER_SKIN_ALPHA;
auto_play = my_videos[i].@VIDEO_AUTOPLAY;
my_player.skinBackgroundColor = player_skin_color;
my_player.skinBackgroundAlpha = player_skin_alpha;
my_player.autoPlay = auto_play;
my_player.source = my_videos[i].@URL;
videoArray.push(my_player);
addChild(my_player);
}
}
function positionPlayer():void {
for (var i:int = 0; i < my_total; i++)
{
videoArray[i].x = my_videos[i].@PLAYER_X;
videoArray[i].y = my_videos[i].@PLAYER_Y;
videoArray[i].width = my_videos[i].@PLAYER_WIDTH;
videoArray[i].height = my_videos[i].@PLAYER_HEIGHT;
}
}
Upvotes: 1
Reputation: 3642
every time you add an FLVPlayback instance you create it on my_player.
instead of
my_player = new FLVPlayback();
try
//Create an array for the players
var my_players:Array = new Array();
//Add the player instances to the array
my_players.push (new FLVPlayback());
It should solve the other issues.
Rob
Upvotes: 0