Corona SDK Création d'une application de lecteur de musique - Étapes finales

Bienvenue dans la deuxième partie de notre didacticiel sur le lecteur de musique Corona SDK. Dans cette partie, nous allons placer l’interface en scène, gérer la logique de l’application, les commandes de boutons et les étapes permettant de créer l’application finale..


Où nous nous sommes laissés?

S'il vous plaît assurez-vous de vérifier partie 1 de la série pour bien comprendre ce tutoriel.

Étape 1: Variables

Ce sont les variables que nous allons utiliser. Lisez les commentaires dans le code pour en savoir plus sur eux. Certains de leurs noms s’expliquent d'eux-mêmes, il n'y aura donc pas de commentaire..

 -- Variables local currentSong = 1 local en lecture locale timerSource local min = 0 local sec = 0

Étape 2: Fonctions

Déclarer toutes les fonctions comme local au début.

 -- Fonctions local Main =  buildGUI local =  playCurrentSong local =  stopSong local =  nextSong local =  local prevSong =  updateInfo local =  local updateProgress = 

Étape 3: Fonction principale

Nous allons ensuite créer la fonction qui initialisera toute la logique de l'application:

 -- Fonction principale Fonction Main () buildGUI () end

Étape 4: Construire l'interface graphique

La fonction suivante place toute l'interface graphique sur la scène. Il est construit dans le même ordre que celui dans lequel nous avons déclaré les variables, de sorte que vous pourrez facilement identifier chaque partie par les noms de variables..

 fonction buildGUI () bg = display.newImage ('background.png') infoBar = display.newImage ('infoBar.png', 20, 168) imageMarker = display.newImage ('imageMarker.png', 30, 178) cdCover = display.newImage ('s1.png', 30, 178) titleText = display.newText ('1. Ici sans vous' ', 117, 176, native.systemFontBold, 14) titleText: setTextColor (246, 237, 240) parText = display.newText ('By', 121, 197, native.systemFont, 10) byText: setTextColor (191, 182, 183) artistText = display.newText ('3 portes vers le bas', 137, 197, native.systemFontBold, 10) artistText: setTextColor (244, 204, 106) buttonBar = display.newImage ('buttonBar.png', 20, 278) playBtn = display.newImage ('playBtn.png', 25, 279) stopBtn = display.newImage ('stopBtn .png ', 27, 282) stopBtn.isVisible = false prevBtn = display.newImage (' prevBtn.png ', 55, 279) nextBtn = display.newImage (' nextBtn.png ', 85, 279) progressBar = display.newImage ('progressBar.png', 126, 290) progress = display.newRoundedRect (0, 0, 100, 10, 3) progress: setFillColor (244, 204, 106) prog Ressource: setReferencePoint (display.TopLeftReferencePoint) progress.x = 126 progress.y = 290 progress.isVisible = false actuel = display.newText ('00: 00 ', 235, 288, native.systemFont, 9) actuel: setTextColor (246) , 237, 240) total = display.newText ('/ 00:00', 259, 288, native.systemFont, 9) total: setTextColor (191, 182, 183) playBtn: addEventListener ('tap', playCurrentSong) stopBtn: addEventListener ('tap', stopSong) nextBtn: addEventListener ('tap', nextSong) prevBtn: addEventListener ('tap', prevSong) end

Nous ajoutons les écouteurs des boutons dans les dernières lignes pour que les boutons remplissent la fonction correspondante.


Étape 5: Jouer la chanson en cours

Ce code fonctionne lorsque le bouton de lecture est enfoncé.

Il réinitialise les compteurs de chanson et de temps (au cas où ce n’est pas la première fois que vous appuyez sur le bouton) et lit la chanson spécifiée par le bouton. morceau en cours variable. Après cela, le en jouant variable est définie sur vrai, cela lira automatiquement la chanson suivante ou précédente lorsque les touches suivantes ou précédentes seront enfoncées.

 function playCurrentSong: tapez sur (e) audio.rewind (chansons [currentSong]) sec = 0 min = 0 audio.play (chansons [currentSong]) en cours de lecture = true updateInfo () timerSource = timer.performWithDelay (1000, updateProgress, 0) playBtn .isVisible = false stopBtn.isVisible = true end

Il démarre également la minuterie pour commencer le compteur de durée de la chanson et cache le bouton de lecture pour révéler le bouton d'arrêt.


Étape 6: Arrêter la chanson

Lorsque vous appuyez sur le bouton d'arrêt, la chanson en cours cesse de jouer et la minuterie est annulée. Les boutons sont retournés à la normale et en jouant est réglé sur faux.

 function stopSong: taper (e) audio.stop () timer.cancel (timerSource) playBtn.isVisible = true stopBtn.isVisible = false en cours de lecture = false fin

Étape 7: chanson suivante

Cette fonction arrête la chanson en cours et passe à la suivante dans le tableau, si le en jouant variable est définie sur
vrai il va jouer automatiquement. Il vérifie également si la chanson suivante est la dernière. Si tel est le cas, elle revient à la première de la ligne..

 function nextSong: appuyez sur (e) audio.stop () currentSong = currentSong + 1 if (currentSong> #songs), puis currentSong = 1, fin si (en cours de lecture), puis audio.rewind (chansons [currentSong]) sec = 0 min = 0 audio .play (songs [currentSong]) fin updateInfo () fin

Étape 8: Chanson précédente

Comme vous pouvez l’imaginer, cette fonction se comporte de la même manière que la précédente, mais à l’arrière..

 fonction prevSong: appuyez sur (e) audio.stop () currentSong = currentSong - 1 if (currentSong < 1) then currentSong = #songs end if(playing) then audio.rewind(songs[currentSong]) sec = 0 min = 0 audio.play(songs[currentSong]) end updateInfo() end

Étape 9: Mettre à jour les informations

Ce code (appelé dans les trois dernières fonctions) gère les informations affichées dans les deux barres.

Il met à jour la pochette de l'album, le titre, l'artiste et le temps des chansons.

 function updateInfo () titleText.text = chaîne de caractères (currentSong)? '. '? songsInfo [currentSong] [2] titleText: setReferencePoint (display.TopLeftReferencePoint) titleText.x = 117 artistText.text = songsInfo [currentSong] [3] artistText: setReferencePoint (display.TopLeftReferencePoint) artistText.x = 137 display cdCover = nil local cdCover = display.newImage (songsInfo [currentSong] [4], 30, 178) local totalMin = math.floor (audio.getDuration (songs [currentSong]) / 1000/60) - total localSec = math. sol (audio.getDuration (chansons [currentSong]) / 1000% 60) - total.text = '/'? totalMin? ':'? totalSec total: setReferencePoint (display.topLeftReferencePoint) total.x = 275 fin

Étape 10: Progression de la mise à jour

Exécutée toutes les secondes, cette fonction met à jour la barre de progression du morceau en fonction de la position actuelle et de sa durée totale..

Notez que les méthodes utilisées par l'API Corona peuvent renvoyer des résultats différents selon le format des fichiers audio..

 fonction updateProgress: timer (e) sec = sec + 1 if (sec == 60) puis sec = 0 min = min + 1 fin locale secS = chaîne (sec) if (#secS < 2) then sec = '0'? sec end current.text = min? ':'? sec current:setReferencePoint(display.topLeftReferencePoint) current.x = 250 -- Progress Bar local position = min? sec position = position * 1000 local duration = audio.getDuration(songs[currentSong]) local percent = (position / duration) print(position, duration, percent) progress.isVisible = true progress.xScale = percent end

Étape 11: Appelez la fonction principale

Afin de démarrer initialement l'application, theяPrincipaleLa fonction doit être appelée. Avec le code ci-dessus en place, nous le ferons ici:

 Principale()

Étape 12: Écran de chargement

Le fichier Default.png est une image qui s’affiche dès le démarrage de l’application pendant que l’iOS charge les données de base pour afficher l’écran principal. Ajoutez cette image dans le dossier source de votre projet, elle sera automatiquement ajoutée par le complémenteur Corona..


Étape 13: Icône

En utilisant les graphiques que vous avez créés auparavant, vous pouvez maintenant créer une belle et jolie icône. La taille de l'icône de l'iPhone non rétine est 57x57px, mais la version de la rétine est 114x114px et le magasin iTunes nécessite une version de 512x512px. Je suggère de créer d'abord la version 512? 512, puis de la réduire pour les autres tailles.

Il n'est pas nécessaire que les angles soient arrondis ou que la lumière soit transparente, iTunes et l'iPhone le feront pour vous..


Étape 14: Test dans le simulateur

Il est temps de faire le test final. Ouvrez le simulateur Corona, accédez au dossier de votre projet, puis cliquez sur Ouvrir. Si tout fonctionne comme prévu, vous êtes prêt pour l'étape finale!


Étape 15: Construire

Dans le simulateur Corona, allez àFichier> Construireandet sélectionnez votre appareil cible. Remplissez les données requises et cliquez sur

construire. Attendez quelques secondes et votre application sera prête pour le test de l'appareil et / ou la soumission pour la distribution.!


Conclusion

Expérimentez avec le résultat final et essayez de créer votre version personnalisée de l'application!

J'espère que vous avez aimé cette série de tutoriels et que vous l'avez trouvé utile. Merci pour la lecture!