Aquesta assignatura és optativa també i de les primeres que vaig cursar a la carrera. Al llarg del quadrimestre es desenvolupava una aplicació meteorològica utilitzant L'API de Yahoo del temps. El programari utilitzat va ser Flash Builder. En aquests últims anys el programari que s'utilitza a quedat relegat a l'igual que la nomenclatura de l'assignatura que avanç s'anomenava "Aplicacions Rich Media" i actualment s'anomena "Aplicacions Interactives multiplataforma".
Metodología i Desenvolupament de Projectes en Xarxa PAC 2
Aplicacions Interactives multiplataforma_pac3
1. Pregunta1
Raona perquè es important fer servir la programació dirigida per
esdeveniments a l'hora d'interactuar amb l'usuari?
L’ entorn d'execució (swf o Flex) crea mecanismes tals com el polimorfisme* i l'enviament de
missatges entre objectes. La qual cosa facilita la interactivitat entre l’usuari i l’aplicació que
es pot oferir moltes respostes el fa el més paregut al món real.
A diferència en programació seqüencial que una ordre té un començament i un final i és
quant acaba aquest procès quant l’usuari obté una resposta
*polimorfisme : En programació orientada a objectes es denomina polimorfisme a la capacitat que
tenen els objectes d'una classe de respondre al mateix missatge o esdeveniment en funció dels
paràmetres utilitzats durant la seva invocació. Ja que les característiques dels objectes permeten
acceptar diferents paràmetres per a un mateix mètode.
Quines son les seves avantatges?
Relacionar el sistema al món real.
reutilització extensió del codi.
Permet crear sistemes més complexos.
Facilita la creació de programes visuals.
Agilita el desenvolupament de programari
Facilita el treball en equip
Facilita el manteniment del programar
Explica el procés de gestió de l'esdeveniment per a detectar que s'ha
pressionat la tecla 'a' del teclat. Adjunte fitxer
import flash.events.KeyboardEvent;//
// Creem un event del tipus Listener a l'escritori (stage) mitgant la funció (addEventListener)
// per crear un event de teclat utilitzarem el comando (KeyboardEvent)
// i per que detecte quant una tecla es polsada utilitzarem el comando (KEY_DOWN)
// i quant aquest esdeveniment se succeeixi ho fara sobre la funció amb el nom (teclaAPolsada)
stage.addEventListener(KeyboardEvent.KEY_DOWN, teclaAPolsada);
// Creem una funció anomenada (teclaAPulsada)
// quan aquesta s'executi volem que guardi el valor dins d'una variable (tecla)
// el tipus d'esdeveniment és (keyboardEvent)
// utilitzarem un (void) perquè aquesta variable no va a retornar cap valor
function teclaAPolsada (tecla:KeyboardEvent):void
// el que va fer aquesta funció és detectar la tecla que s'hagi pressionat i per veure-ho
// hem marcat un (trace) i sabrem si s'ha pulsat la lletra aquant aparega el nombre 65
// ja que cada caràcter te un codi
{
trace(tecla.keyCode);
}
2. Pregunta2
Quan es imprescindible fer servir un preloader?
Quant es fa una petició per part de l'usuari i aquesta ja siga pel pes de l’objecte
demanat o perquè el temps de reposta del servidor o l’aplicació en si en realitzar
l’operació sol·licitada.
Quina es la seva finalitat?
Cridar l’atenció de l’usuari i dir li d’alguna manera que se esta procedint realitzant la
tasca sol·licitada per aquest
Quins dos tipus de preloaders podem crear? Explica cadascun d'ells i dona un
exemple de la seva utilització.
a) No Quantitatiu: Aquest tipus de preloader s’utilitza quant estem a l’espera de
resposta per part del servidor i no podem estimar el temps de resposta d’aquest.
Utilitzarem una petita animació per indicar que l’aplicació no esta bloquejada.
Al fer una petició a un corrector online. Aquest te que accedir a les nostres bases de
dades si son 3 línies no tardara, pero si cada usuari fa una correcció distinta pot ser
un parraf o 50 fulles el temps de demora no el sabrem.
b) Quantitatiu: Sempre que tinguem coneixement del pes de l’element sol·licitat al
servidor, utilitzarem una barra de progres la qual et tot moment ens indicara el temps
que resta per obtenir la descarrega.
Tenim un swf que te un pes determinat, al fer la solicitud d’aquest al servidor, aquest
en funció de la velocitat de connexió que tinguem ens indicara el temps que tardara.
3. Pregunta3
Volem crear una aplicació que funcioni com un reproductor de vídeo. Per això
importarem un vídeo (fitxer .mp4) i després donarem les opcions de: reproduir
vídeo, fer pausa, parar i pujar/baixar el volum.
Quines classes ens aporta AS3 per a fer-ho i com les utilitzarem per a poder
real
itzar la aplicació.
import flash.display.Sprite; s’utilitza esta classe per a poder manejar els botons de
l’aplicació, ja que son sprites
public var btPlay:Sprite;
public var btStop:Sprite;
public var btPause:Sprite;
public var btVolumeUp:Sprite;
public var btVolumeDown:Sprite;
import flash.events.Event; s’utilitza com a classe base per a poder crear
esdeveniments
import flash.events.MouseEvent; esta es per events de ratoli
//Botons eventListeners
btPlay.addEventListener(MouseEvent.CLICK, playHandler);
btStop.addEventListener(MouseEvent.CLICK, stopHandler);
btPause.addEventListener(MouseEvent.CLICK, pauseHandler);
btVolumeUp.addEventListener(MouseEvent.CLICK, volumeUpHandler);
btVolumeDown.addEventListener(MouseEvent.CLICK,volumeDownHandler);
import flash.media.SoundTransform; Esta clase es per aplicar metodes i propietats
d’audio.
L’exemple es per a putxar el volumen el parametros van de 0 a 1 i els increments de
0’1
private function volumeUpHandler(e:Event):void {
trace(soundTransform1.volume);
if(soundTransform1.volume<1){
soundTransform1.volume =
Number(soundTransform1.volume+0.1);
stream.soundTransform = soundTransform1;
}
import flash.media.Video; permitix visualitzar video i poder treballar la posicio,
//Center video
video.x = (videoScreen.width-video.width)/2;
video.y = (videoScreen.height-video.height)/2;
4. import flash.net.NetConnection; es per a conectar dispositius de video, el posarem en
(null) ja que este per defecte busca artxius Flash Media
Server
public function LoadVideo()
{
//Initialitzar variables
videoURL = "fitxer .mp4";
connection = new NetConnection();
soundTransform1 = new SoundTransform();
init();
}
//Connect Stream
connection.connect(null);
import flash.net.NetStream; esta es per a poder manejar fluix de datos
import flash.net.URLRequest; esta classe es per a possar la ruta de un artxiu
import flash.events.NetStatusEvent; Un objecte NetConnection, NetStream distribuix
objectes NetStatusEvent quant informa sobre el
seu estat. Solament hi ha un tipus d'esdeveniment
d'estat: NetStatusEvent. NET_STATUS.
import flash.events.SecurityErrorEvent; per a un objecte de destinació en el qual es
produeix un error de seguretat.
import flash.events.AsyncErrorEvent; aquesta s’utilitza quant les clases
5. NetConnection i NetStream donnen error
import flash.events.ProgressEvent; Es distribueix un objecte ProgressEvent
quan s'inicia l'operació de càrrega o quan un
socket rep dades. Aquests esdeveniments solen
generar-se en carregar arxius SWF, imatges o
dades en l’ aplicació
import flash.ui.Mouse; Els mètodes de la classe Mouse s'utilitzen per ocultar i
mostrar
el punter del ratolí, o per definir un estil concret de punter.
Nota: Explicar indicant les classes i mètodes que utilitzaríem, no cal posar el
codi complet de la aplicació.