Categories
Non classé

Bogue sur la rotation

En faisant une démonstration de TeleLineo, je me suis rendu compte d’un bogue:

BogueVertical

Eh oui, j’ai oublié de gérer la rotation, ou plutôt de refuser la position verticale. L’application démarre bien en orientation horizontale, et c’est pour cela que je ne me suis pas rendu compte du problème. De fait, je viens de rejeter l’executable pour qu’il ne soit pas contrôlé par Apple. Je vais corriger rapidement le problème et re-soumettre dans la foulée.

Categories
Non classé

20h02 — L’application est soumise

L’application est soumise à Apple. J’ai donc deux minutes de retard, mais on peut admettre que la mission est remplie dans le temps imparti.

SnapshotTeleLineo

Je vous donne rendez-vous dans quelques jours quand l’application aura été validée par Apple (ou pas).

Categories
Non classé

19h58

J’ai généré un profil sur le portail d’Apple et saisi toutes les infos sur l’appli. Je suis actuellement en train de téléverser l’application sur les serveur d’Apple. Vais-je finir avant 20h ? Le suspense est à son comble!

Categories
Non classé

19h34

C’est bon pour l’analyse statique et pour Instruments. Ça ne m’étonne guère puisque j’ai activé ARC ! J’ai créé rapidement une image de lancement, en effaçant les titres et les molettes. Il me reste à signer l’application et écrire une présentation pour l’App Store.

Categories
Non classé

19h15

Le dialogue qui affiche les infos sur l’appli est terminé:

LineoInfo

J’ai aussi fait une icône assez moche (oui, je sais, c’est le principal critère pour télécharger une appli, mais je n’ai juste pas le temps):

AppIcon320

Pour finir, je vais lancer un petit coup d’Instruments et d’analyse statique sous Xcode. Aurai-je le temps de proposer l’appli à Apple avant 20 h ?

Categories
Non classé

Deuxième molette

J’ai remanié un peu le code et implémenté la molette verticale. Le rendu ne me plait pas trop; à vrai dire, c’est assez difficile graphiquement parce que la lumière est sensée venir du haut. J’ai tout de même un résultat qui indique clairement le rôle de la molette:

MoletteHorizontale

Bon, ce n’est clairement pas parfait, mais il ne reste plus que deux heures et j’ai encore une boite de dialogue et l’icône de l’application à faire.

Categories
Non classé

Première molette

La molette verticale fonctionne. Voici ce que ça donne graphiquement:

MoletteVerticale

Pour simuler le mouvement de rotation, j’ai eu recours à une astuce. Comme il faut au moins trois étapes d’animation pour suggérer la direction d’un mouvement, j’ai tracé un segment horizontal (une rainure) tous les trois points. En fonction du mouvement imprimé, je change l’ordonnée du premier segment horizontal tracé. Ainsi dans le code, on a ça:

animationGrooveDelta = (animationGrooveDelta + (int)pointsDelta) % kAnimationsSteps;
  • animationGrooveDelta est le décalage de l’ordonnée du premier segment
  • pointsDelta est la distance du glisser du doigt
  • kAnimationsSteps vaut 3

L’illusion de mouvement est parfaite, mais je ne suis très satisfait du rendu.

Categories
Non classé

Point à 13 h

Comme prévu, ce matin, j’ai travaillé le graphisme. Voilà ce que ça donne:

Capture13h

J’ai essentiellement ajouté des ombres pour donner du volume et rendre l’objet plus réaliste. Evidemment, il reste un gros travail sur les molettes que je réserve à cet après-midi. J’ai commencé par ajouter une barre de navigation. Je n’étais pas très sûr de vouloir le faire pour des questions esthétiques. Finalement, je trouve que ça va. Pour fixer la couleur, j’ai utilisé les nouvelles API UIAppearance de iOS 5.

Pour ce qui est des outils de dessin, j’ai commencé avec Lineform. Ce logiciel était ce qui se faisait de mieux dans cette gamme de prix quand je l’ai acheté, il y a quelques années. Seulement, son auteur a été embauché par Apple, le logiciel a été racheté par son distributeur, et depuis, les bugs restent. Bref, j’aurais préféré qu’il soit racheté par une équipe compétente.

En l’occurence, j’ai fait tout le travail pour me rendre compte de gros problèmes de correspondance des couleurs. De fait, j’ai fait une copie d’écran et fini sous PixelMator. Au départ, je voulais découper l’écran en plusieurs parties pour réduire la taille de l’appli. Mais le .png ne pèse que 40 ko, ce qui est très acceptable; j’utilise donc une seule UIImageView en fond. J’ai superposé ma vue de dessin en la rendant non-opaque. Au bas, j’ai placé un petit bouton avec le logo de Céroce. L’appuyer affichera un écran modal pour présenter la société et renvoyer vers son offre de prestation.

Categories
Non classé

Dessin à la molette

J’ai amélioré l’application, et on peut maintenant dessiner:

chateau

(je voulais vous dessiner la “Naissance de Vénus”, mais faute de temps, j’ai choisi un sujet plus simple). Et on peut aussi effacer l’écran en secouant l’iPad. Ça suffit pour aujourd’hui. Demain, je travaillerai la partie graphique (voire sonore).

Categories
Non classé

Premier prototype

Je viens de prendre ma pause déjeuner, et je vais maintenant me mettre à coder. L’essentiel de la programmation concerne la partie graphique et l’interface homme-machine. Pour l’instant, j’essaie de dégrossir le travail, à savoir où doivent se placer les éléments de l’interface et quelle taille leur donner.

Les bases de l’interface

Vue principale

L’application est pour ainsi dire constituée d’une seule vue. Celle-ci est forcément horizontale, il n’y a donc pas de rotation d’écran à gérer.

Vue de dessin

Une sous-classe de UIView affichera le dessin. Pour l’instant, je vais simplement afficher une croix qui représente la mine qui gratte la vitre.

Molettes

Les molettes sont l’aspect le plus difficile de l’application. Il s’agira d’une sous-classe de UIControl, et elle possède des valeurs minimales et maximales, ce qui l’apparente à UISlider, mais le fait qu’il n’y ait pas de curseur indique que je vais devoir créer ma propre sous-classe de UIControl.

Création du projet Xcode

Il y a au moins une bonne raison à choisir le nom de l’application avant toute chose, c’est qu’on en a besoin pour créer le projet Xcode! Certes, ce nom peut être changé par la suite, mais ça représente du travail. Je n’ai qu’à choisir le modèle d’application qui va bien et régler l’orientation de l’écran. Pour ce projet, je ne vais assurer la compatibilité qu’avec iOS 5 (tous les iPad sont compatibles), de fait, je vais utiliser ARC pour gérer la mémoire.

Avancement

Après quelques heures de travail, j’obtiens un premier prototype presque fonctionnel:

Proto1

Pour faciliter la manipulation des molettes avec les pouces, je les ai déportées vers le haut. Elles permettent d’ors et déjà de déplacer la croix à l’écran. Je sais que c’est laid, mais pour l’instant, j’en suis encore à régler précisément les dimensions des éléments, alors je ne veux pas partir tout de suite dans le graphisme.

D’un point de vue fonctionnel, il me reste à gérer le dessin et l’effacement. Faut-il dessiner en bitmap ou en vectoriel ? Je pense que le plus rapide à développer est d’utiliser du vectoriel et je ne pense pas avoir de problème de performances, alors je vais partir sur cette solution.