Il sorgente sarà disponibile a giorni, nel frattempo ecco il codice utilizzato
Security.allowInsecureDomain("*");
Security.allowDomain("*");
var player:Object;
var loader:Loader;
var flag:Boolean=false;
var apiPlayer:String="http://www.youtube.com/apiplayer?version=3";
var id:String="u1zgFlCw8Aw";
var _duration:uint;
var rect:Rectangle;
var _time;
var sec;
var rect_volume:Rectangle;
container.mask=maschera;
function playTube() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
loader.load(new URLRequest(apiPlayer));
}
function onLoaderInit(e:Event):void {
container.addChild(loader);
loader.content.addEventListener("onReady", onPlayerReady);
loader.content.addEventListener("onError", onPlayerError);
loader.content.addEventListener("onStateChange", onPlayerStateChange);
loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
}
function onPlayerReady(e:Event):void {
player=loader.content;
startVideo();
}
function startVideo():void {
player.loadVideoById(id);
player.setSize(540, 305);
}
function onPauseVideo(e:MouseEvent):void {
player.pauseVideo();
removeEventListener(Event.ENTER_FRAME, onProgress);
}
function onPlayVideo(e:MouseEvent):void {
player.playVideo();
addEventListener(Event.ENTER_FRAME, onProgress);
}
function onPlayerError(e:Event):void {
trace("player error:", Object(e).data);
}
function onPlayerStateChange(e:Event):void {
addEventListener(Event.ENTER_FRAME, onProgress);
trace("player state:", Object(e).data);
var _state=Object(e).data;
switch (_state) {
case -1 :
//unstarted;
break;
case 0 :
//ended;
break;
case 1 :
//playing;
break;
case 2 :
//paused;
break;
case 3 :
//buffering;
break;
case 5 :
//cued;
break;
}
}
function playClick(e:MouseEvent) {
if (!flag) {
play_pause.gotoAndStop(2);
onPauseVideo(e);
} else {
play_pause.gotoAndStop(1);
onPlayVideo(e);
}
flag=! flag;
}
function volume_press(e:MouseEvent) {
volume_mc.maskera.startDrag(false, rect_volume);
volume_mc.addEventListener(flash.events.Event.ENTER_FRAME, setVolume);
stage.addEventListener(flash.events.MouseEvent.MOUSE_UP, volume_release);
}
function volume_release(e:MouseEvent) {
volume_mc.maskera.stopDrag();
volume_mc.removeEventListener(Event.ENTER_FRAME, setVolume);
}
function setVolume(e:Event) {
var vol = ((volume_mc.maskera.x+volume_mc.maskera.width)*2);
player.setVolume(vol)
}
function onProgress(e:Event):void {
_time=player.getCurrentTime();
_duration=player.getDuration();
var loaded=player.getVideoBytesLoaded()/player.getVideoBytesTotal();
loader_mc.bar.width = (loaded * loader_mc.line_bar.width );
loader_mc.btn.x = (_time / _duration) * loader_mc.line_bar.width;
var t=getTime(_time);
var d=getTime(_duration);
txt.text=t+" / "+d;
}
function setSeek(e:MouseEvent) {
removeEventListener(Event.ENTER_FRAME, onProgress);
addEventListener(Event.ENTER_FRAME, seekStatus);
rect=new Rectangle(0,loader_mc.btn.y,loader_mc.bar.width,0);
e.target.startDrag(false, rect);
addEventListener(MouseEvent.MOUSE_UP, seekRelease);
}
function seekRelease(e:MouseEvent) {
_time=sec;
removeEventListener(Event.ENTER_FRAME, seekStatus);
addEventListener(Event.ENTER_FRAME, onProgress);
loader_mc.btn.stopDrag();
}
function seekStatus(e:Event) {
sec = Math.floor((loader_mc.btn.x / loader_mc.line_bar.width) * _duration);
player.seekTo(sec,false);
}
function onVideoPlaybackQualityChange(e:Event):void {
//
}
function getTime(sec:Number) {
var min=Math.floor(sec/60);
sec-=min*60;
if (sec<10) {
var sec_str="0"+Math.floor(sec);
} else {
sec_str=Math.floor(sec);
}
if (min<10) {
var min_str="0"+min;
} else {
min_str=min;
}
var time=min_str+":"+sec_str;
return time;
}
volume_mc.maskera.buttonMode=true;
volume_mc.maskera.addEventListener(MouseEvent.MOUSE_DOWN, volume_press);
volume_mc.maskera.mask=volume_mc.clip;
rect_volume=new Rectangle(- volume_mc.width+2,0,volume_mc.width-2,0);
play_pause.buttonMode=true;
play_pause.addEventListener(MouseEvent.CLICK, playClick);
loader_mc.btn.buttonMode=true;
loader_mc.btn.addEventListener(MouseEvent.MOUSE_DOWN, setSeek);
playTube();
ho notato che cliccando sul logo di youTube, per andare al link relativo al video, il player si blocca, così in attesa di capire perchè succede, c'ho messo sopra un bottone trasparente.
Attivato ieri il nuovo negozio digitale su Fingerpicking Net, per ora solo 3 video ma sono già pronte le video lezioni di Daniele Bazzani tratte dal libro Fingerstyle Blues Guitar e altro ancora…
Il video sopra è una versione demo molto compressa e cmq direi che il risultato è più che soddisfacente, quelli su Fingerpicking sono in alta risoluzione.
ecco un mini video girato da Robi, altre foto potete trovarle direttamente su ArteMinore
easy flv player, serviva per il sito di un cliente, una cosuccia semplice e minimale, ma funziona…
:)
player Flv (13.9 KiB, 430 hits)
e la sua nuova fidanzata
a proposito, Daniele Bazzani e Stefano Barbati saranno in concerto al Six Bars Jail circolo SMS di Serpiolle (FI) il 3 ottobre
una splendica occasione per ascoltare dell’ottima musica e incontrare vecchi amici, uno su tutti il buon wayx… :)