Archive for the 'Flash' Category

Flash News Reader

Lettore in flash (CS4 AS3) di file xml, può essere facilmente modificato per leggere rss, molto semplice da configurare: numero delle news, foglio di stile (css), colore di sfondo e grafica in genere, per facilitare il compito è tutto scritto sulla timeline con relativi commenti, niente classi esterne. Pieno supporto tecnico.

Il file vi verrà inviato a conferma del pagamento all’indirizzo email segnalato da Paypal. (Fla e file di esempio)

XML Flash News Reader (CS4 AS3)

Features: – Fully customizable from the timeline, max number of news, scroll speed, css support, easy to use and or modify. Full support, please feel free to mail me if you need help or more info.

You will receice your chosen file after payment confirmation at your email address i.e. the email you’ll use with Paypal. (Fla and sample files)

demo

News Reader: € 2.00

easyFlip

This movie requires Flash Player 9



import gs.*;

function onEnter(e:Event):void {

	var cur = Math.cos(mc.rotationY*Math.PI/180)
		if(cur>.1){
			mc.cover.visible=true;
			mc.back.visible=false;

		} else {
			mc.cover.visible=false;
			mc.back.visible=true;
		}

}

mc.back.rotationY=-180

mc.addEventListener(MouseEvent.CLICK,rotateRight);
mc.buttonMode=true
function rotateRight(e:Event):void{
	addEventListener(Event.ENTER_FRAME, onEnter);
	TweenLite.to(mc, 1, {rotationY:mc.rotationY - 180,
				 onComplete:function(){removeEventListener(Event.ENTER_FRAME, onEnter);}
								}
	);
}

AS3 youTube player

This movie requires Flash Player 9

Prima release di un player realizzato con le nuove API per caricare i video di youTube direttamente in flash, non ho trovato molti esempi così ho deciso di farne uno, ma c’è ancora da lavorare…
Tanto per cambiare.

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.

News ticker orizzontale

This movie requires Flash Player 9

Semplice ticker dinamico, i contenuti sono prelevati da un file xml, in questo caso sono i titoli delle varie email che mi inviano i miei amici spammer…
ce l’ho piccolo, ce l’ho stretto, ce l’ho moscio, non ce l’ho più etc etc etc
mi sono sempre chiesto chi gli passa queste informazioni che in teoria dovrebbe essere riservate,
boh, misteri della rete.
la configurazione è molto semplice, la larghezza e altezza della maschera, il percorso del file xml e il posizionamento sullo stage, altri variabili possono essere cambiate direttamente nella classe, il tipo di font (non incluso nello zip, vedi libreria), la grandezza del carattere, la velocità di spostameno etc etc
cià!

Download: Ticker orizzontale  Ticker orizzontale (18.6 KiB, 395 hits)

getColor

Semplice function per ricavare il colore di un movieclip, non so se esista un altro metodo ma se qualcuno ne fosse al corrente…

function getColor(clip):String {
	var sprite = new Sprite();
	sprite = clip as Sprite;
	var bitmap = new BitmapData(1, 1);
	bitmap.draw(sprite);
	var hexLabel = bitmap.getPixel(0, 0).toString(16).toUpperCase();
	var hex = "0x" + hexLabel;
	return hex;
}
trace(getColor(mc));

Web service

Un altro progetto al quale sto lavorando prevede l’utilizzo di un web service, la classe che utilizzo per richiamare i dati è quella sempre valida di Carlo Alducente, ma da nessuna parte indica come parserizzare i dati e se fate una ricerca con google ci sono un bel po’ di post a riguardo, ma nessuna… soluzione :)
questo è il parser per l’esempio postato da Alducente

import alducente.services.WebService;
import flash.events.*;

var ws:WebService = new WebService();
ws.addEventListener(Event.CONNECT, connected);
ws.connect("http://ws.cdyne.com/ip2geo/ip2geo.asmx?WSDL");

function connected(evt:Event):void {
	ws.ResolveIP(parse, "192.123.0.200", 0);
}

function parse(serviceResponse:XML):void {
	var soap:Namespace = serviceResponse.namespace();
	var body:XML = serviceResponse.soap::Body[0];
	var resNameSpace:Namespace = new Namespace("http://ws.cdyne.com/IP2Geo");
	var r:XML = body.resNameSpace::ResolveIPResponse[0];
	var resultData:String = r.children()[0].toString();
	var xmldata:XML = XML(resultData);
	var list:XMLList =XMLList(xmldata);
	var i:int = -1;
	var n:int = list.length();
	while ( ++ i < n ) {
		trace( list[ i ].*::City );
		trace( list[ i ].*::StateProvince );
		trace( list[ i ].*::Country );
	}
}

non tutti i file *asmx sono uguali quindi qualcosina potrebbe cambiare, ma in linea di massima l'esempio è valido.
ho anche notato che in alcuni casi basta richiamare il file asmx seguito dal servizio (se non sono previsti parametri) e si ottiene direttamente il file xml, senza bisogno quindi di utilizzare la classe Webservice

Next Page »