Tag Archive for 'Flex'

Adobe AIR voor Linux

Een paar weken geleden heb ik gepost over de officiële release van Adobe AIR, de cross-platform runtime van Adobe die het mogelijk maakt voor developers om met hun bestaande kennis en kunnen programma’s voor de desktop te maken, zonder zich daarbij tot een platform te moeten beperken.  Toen ik dat artikel schreef was Adobe AIR nog niet inzetbaar op het Linux platform. Sinds vandaag is dat anders!

Serge Jespers berichtte vandaag dat de eerste alpha versie van de runtime voor Linux beschikbaar is. Op deze manier wordt het bekende open-source platform weer toegankelijker! Verder is er vandaag ook een update beschikbaar geworden voor de Flex Builder voor Linux. Deze zou AIR support moeten geven zodat developers ook op Linux aan de slag kunnen gaan!

En om het plaatje af te maken, maakt Adobe bekend dat ze zich bij de Linux Foundation aansluiten.

Dit lijkt mij heel goed en fijn nieuws!

Playr: De ActionScript 3 music player class!

Ik heb gisteren de laatste wijzigingen aangebracht aan de vroegere MusicPlayer class. Zoals het er nu uitziet lijkt deze klasse af, voor een eerste ronde echt gebruik, keiharde feedback en vele suggesties.

Belangrijke wijzigingen zijn:

  • Classnames, en package names zijn aangepast.
    • De klasse zelf heet nu Playr in plaats van MusicPlayer.
    • Package name is aangepast. com.noCreativity.MusicPlayer is nu com.nocreativity.playr (met dank aan Peter Elst voor de best practice tip ;) )
  • Shuffle mode toegevoegd
  • Trackprogress kan nu ook opgevraagd worden
  • Singletrack werkt nu volledig
  • Bug ivm repeat weggewerkt

Wat doet Playr?

Playr is een Flash Actionscript 3 klasse die het maken van een volwaardige music player in Flash/Flex/AIR reduceert tot enkele regels code. Of je nu maar 1 loop wilt laten spelen, of een volledige playlist wilt afspelen in Flash/Flex/AIR: Playr kan het sneller dan jij!

Playr kan je gebruiken om een enkele loop af te spelen, of voor volledige XML afspeellijsten te laten afspelen. Zowel shuffle als repeat zijn mogelijk. Ook de interactiviteit met de gebruiker kan snel worden toegevoegd.
De Playr class is ontworpen met snelheid en gemak voor ogen

Adobe AIR goes live

Adobe AIR LogoNa meer dan 1 jaar is het eindelijk zover: Adobe Integrated Runtime verlaat zijn beta fase, en is zomee officieel gereleased.

Dat is goed nieuws voor de RIA developers onder ons. Want vanaf nu kunnen we dus echte applicaties maken met de kennis die we hebben vanuit onze webdevelopment ervaringen. En het kost niets! Cooler nog: het is crossplatform!

Wat is Adobe AIR?

Adobe Integrated Runtime is een runtime omgeving die het mogelijk maakt voor RIA developers om met hun gekende technologieën zoals Flash, Flex of HTML/Javascript interactieve applicaties te maken die rechtstreeks op je computer draaien, en toch meteen in contact staan met online applicaties zoals Twitter, eBay, Pownce, of MTV.

AIR biedt een rijke API voor bestaande developers die toegang geeft tot de verschillende mogelijkheden van de computer zoals bijvoorbeeld het bestandssysteem zodat je met een kleine AIR app makkelijk een bestand kunt openen, bewerken, opslaan, of zelfs uploaden. Zo zijn er talrijke mogelijkheden.

Waarom Adobe AIR?
Menig software developer zal hier natuurlijk scheef naar kijken, en zich afvragen: “Waarom zou ik Adobe AIR gebruiken als ik VB.net of C# heb?”

Het antwoord is simpel:

  • AIR is flexibel!
    Wil je een applicatie schrijven die gebaseerd is op Flash, of op HTML en Javascript? Het maakt niet uit. AIR apps kunnen met beiden gebouwd worden.
  • AIR laat jou kiezen!
    Ben jij altijd al fan geweest van de Flash IDE? Of gaat het ontwikkelen sneller in Flex Builder? Of ligt Flash jou niet zo, en ben je meer een HTML/Javascript developer in Dreamweaver? AIR beperkt jou workflow niet: Je kunt AIR apps ontwikkelen en releasen vanuit zowel Flash, Flex Builder, en Dreamweaver.
  • AIR is vooruitstrevend!
    Tegenwoordig is het onmogelijk om ‘Windows-only’ of ‘Linux-only’ te denken. Met de hedendaagse ontwikkeling moet je gewoon met alle platformen rekening houden. Adobe AIR doet dat voor jou! Jij maakt gewoon jouw applicatie in de omgeving naar keuze, en compiled een ‘AIR’ file, die in de runtime van zowel Mac OSX als Windows alsook Linux*.
  • AIR is free! (Klink best grappig, he? :D )
    Applicaties ontwerpen in AIR kost jou niets! Als je over Flash, Flex of Dreamweaver beschikt kun je gewoon aan de slag! Waar je voor Visual Studio veel geld moet betalen om applicaties te kunnen maken, moet je voor AIR gewoon een gratis update (voor Flash, Flex Builder, of Dreamweaver ) downloaden van de Adobe site. Je betaalt niets, en je kunt zooooveel meer en je moet er niets voor bijleren! Je huidige kennis en je huidige tools zijn alles wat je nodig hebt!

Ik herinner me Adobe Live van vorig jaar nog, waar Greg Rewis regelmatig op het podium stond te roepen: ‘Is that cool?!’.
Ik heb hier maar 1 antwoord voor: This is cool!

Update: Ward heeft me attent gemaakt op het feit dat er Express versies zijn van Visual Studio die gratis te verkrijgen zijn en het mogelijk maken om gratis software te ontwikkelen binnen het Microsoft .NET framework.

* De Adobe Integrated Runtime is op het moment van dit schrijven nog niet gereleased, maar Adobe belooft om hier zo snel mogelijk verandering in te brengen. In Adobe we trust ;)

Open-source MP3 Player Class: MusicPlayer (Beta release)

Update: De MusicPlayer class is uit beta, en is nu gekend als Playr. Lees er meer over, en download de class hier.

Na lang wachten heb ik vandaag eindelijk al mijn ditjes en datjes in mijn MusicPlayer class kunnen afwerken.

De player beschikt nu over de volgende properties:

  • Autoplay
  • Playlist laden (XML)
  • De buttonacties instellen
  • 2 progress events (Vooruitgang van inladen van de track, alsook de vooruitgang van de track zelf)
  • Enkele track inladen
  • Repeat
  • ID3 ondersteuning

Wat nog op het programma staat:

  • Shuffle
  • Visualisatie module

Er zijn een aantal wijzigingen in de class gebeurd, waardoor je waarschijnlijk je code zult moeten aanpassen in je huidige projecten. Zo is de import regel iets gewijzigd, gezien de MusicPlayer class zijn eigen events nodig heeft (PlayerEvents). Ik heb de hiërarchie dan ook ietje gewijzigd zodat je geen meerdere imports moet uitvoeren.

De code ziet er voortaan zo uit:

import com.nocreativity.playr.*;
var myPlayer:Playr = new Playr();
myPlayer.autoPlay=true;
myPlayer.repeat = true;
myPlayer.volume = 100;
myPlayer.loadPlaylist("playlist.xml");
myPlayer.registerPlayButton(btnPlay);
myPlayer.registerStopButton(btnStop);
myPlayer.registerPauseButton(btnPause);
myPlayer.registerNextButton(btnNext);
myPlayer.registerPreviousButton(btnPrevious);
myPlayer.registerMuteButton(btnMute);
myPlayer.ID3SourceEnabled =true;

myPlayer.addEventListener(PlayerEvent.SONGINFO,infoHandler);
myPlayer.addEventListener(PlayerEvent.SONG_PROGRESS,songprogressHandler);
myPlayer.addEventListener(PlayerEvent.LOAD_PROGRESS,loadprogressHandler);

function songprogressHandler(e:PlayerEvent):void{
txtSongProgress.text = "song progress: " + e.songprogress;
}
function loadprogressHandler(e:PlayerEvent):void{
txtLoadProgress.text = "load progress: " + e.loadprogress;
}

function infoHandler(e:PlayerEvent):void{
txtTrackInfo.text = myPlayer.artist;
txtTrackInfo.appendText(" - " + myPlayer.trackName);
txtTrackInfo.appendText(" (" +myPlayer.album+")");
txtTrackInfo.appendText(" | " + myPlayer.trackDuration);
}

In het bovenstaande voorbeeld is ook de ID3SourceEnabled gebruikt: deze boolean laat je kiezen of je de ID3tag van je MP3 bestanden wilt gebruiken als bron voor de artist, album en trackName eigenschappen. Als je deze waarde op true zet wordt de artist, album en title tag uit je XML bestand genegeerd, en kun je je XML bestand dus gewoon korter maken. Zet je dit op false wordt je XML bestand als bron van deze eigenschappen gebruikt. Dus als je ID3tags niet naar behoren zijn ingevuld is dit een secundaire oplossing.

Ook de XML heeft een kleine wijziging ondergaan: Er is een nieuwe tag bijgekomen (totalTime): de totale tijd (in seconden) die het betreffende liedje duurt. Dus in geval van een track van 3 minuten en 28 seconden komt dat op 208 (3*60+28) uit. Deze waarde moet handmatig ingegeven worden. Het kan ook via ID3tag maar is precies omslachtig… Als iemand de gouden tip heeft is dit welkom.

Download:

De huidige versie kun je hier downloaden.
Een voorbeeld hoe de XML er moet uitzien staat hier.
Een voorbeeld kun je hier downloaden.
De documentatie heb ik nog niet geupdate, maar dat komt er zo snel mogelijk aan.

Naamsvermelding & Gelijk delen Ik release de MusicPlayer class en de PlayerEvent class onder de Creative Commons license. Dat wil zeggen dat je alles in deze classes mag aanpassen zolang je er een verwijzing naar de originele auteur ( ik dus ;)) in laat staan, en je deze classes met dezelfde rechten verder verdeeld.

Open-source MP3 Player Class: MusicPlayer

Update: Er is een nieuwe versie van deze klasse die je hier kan vinden. De download van deze versie heb ik verwijderd om die reden.

Update 2: De MusicPlayer class is uit beta, en is nu gekend als Playr. Lees er meer over, en download de nieuwe class hier.

Ik heb zonet mijn eerste Actionscript 3 experiment afgewerkt.
Het resultaat is een musicplayer class die iedereen voor z’n eigen doeleinden mag gebruiken.
Voor mij was het een leuke en uitgebreide oefening, maar gezien ik niet meer verder zal werken aan de Actionscript 2 versie van de musicplayer lijkt dit me een mooi vervolg.

Wat Actionscript 3 zelf betreft: Ik ben er helemaal van onder de indruk. Even aanpassen, maar eens ik het door had was het erg makkelijk om over te schakelen.

Ik heb de class gebouwd met het oog op simpel bij gebruik. De uiteindelijke gebruiker van de class moet zo weinig mogelijk zelf doen. Dat is me ook gelukt.

Je kunt gebruik maken van een XML bestand om je playlist op te maken: Voorbeeld

Voorbeeld 1:
Erg minimaal gebruik van de class.

import com.nocreativity.playr.*;
var myPlayer:Playr = new Playr();
myPlayer.autoPlay=true;
myPlayer.loadPlaylist("playlist.xml");

Voorbeeld 2:
Gebruik van de buttonhandlers, repeat eigenschap, en volume door middel van de class.

import com.nocreativity.playr.*;
var myPlayer:Playr = new Playr();
myPlayer.autoPlay=true;
myPlayer.repeat = true;
myPlayer.volume = 100;
myPlayer.loadPlaylist("playlist.xml");
myPlayer.registerPlayButton(btnPlay);
myPlayer.registerStopButton(btnStop);
myPlayer.registerPauseButton(btnPause);
myPlayer.registerNextButton(btnNext);
myPlayer.registerPreviousButton(btnPrevious);
myPlayer.registerMuteButton(btnMute);

-Nieuwe versie hier te vinden-

Indien je vragen, opmerkingen, suggesties hebt: Aarzel niet om ze hier te stellen!
Ontdek je bugs, of zijn er onvolmaaktheden? Post ze hier!
Gelijk welke reden dan ook: laat me iets weten.

Indien je mijn class gebruikt, laat me iets weten zodat ik een idee heb of jullie er iets aan hebben!

Veel succes en plezier ermee :)