Introduction au développement pour iphone/ipad pour un développeur Flash
Introduction Pour s inscrire au programme de développement iphone/ipad (gratuit) : http://developer.apple.com/iphone/ - SDK - Documentation - Tutoriels - Forum d aide...
Langage de développement iphone/ipad Objective-C 1. - Langage objet - Classes - Héritage - Interfaces...
Les grands types d objets ActionScript 3 String int Array Objective-C NSString NSInteger NSArray / NSMutableArray Les grands types d objets affichables SimpleButton TextField Sprite UIButton UILabel UIView
Déclaration d une variable ActionScript 3 var monentier:int = 90; nom variable type Objective-C NSInteger monentier = 90; type nom variable valeur
Déclaration d une variable - Gestion de la mémoire Que ce passe t il dans Flash quand on déclare une chaine? var machaine:string = Hello ; 1. Flash attribue automatique un espace mémoire pour la chaine de caractère 2. Flash assigne la chaine qu on a déclaré à cet espace mémoire 3. On utilise notre chaine pour en faire ce qu on veut 4. Flash supprime automatiquement la chaine de la mémoire lorsqu on ne l utilise plus (Garbage collector)
Déclaration d une variable - Gestion de la mémoire Comment déclarer une variable mémoire en objective-c? NSString *machaine = [[NSString alloc] initwithstring:@ Hello ]; //On utilise notre chaine //... [machaine release]
Déclaration d une variable - Gestion de la mémoire Comment déclarer une variable mémoire en objective-c? NSString *machaine = [[NSString alloc] initwithstring:@ Hello ]; //On utilise notre chaine //... [machaine release] Pourquoi c est à nous de gérer ca?!?
Performances et contraintes du support L iphone/ipad a très peu de mémoire ram : - iphone 2G / iphone 3G : 128mo - iphone 3GS / ipad : 256mo - iphone 4 : 512 mo L iphone/ipad a un processeur lent L iphone/ipad doit garder des ressources pour le système : Téléphone, SMS, Réseau etc...
Les classes ActionScript 3 - Un seul fichier pour toute la classe - Déclaration des variables / fonction au même endroit que le code Objective-C - Deux fichiers pour une seule classe - Un fichier header (.h) : Déclaration de la classe, des variables et des fonctions - interface - Un fichier main (.m) : Utilisation des variables, code des fonctions - implementation
Les classes - Structure d une classe AS3 package{ import flash.display.movieclip; public class maclasse extends MovieClip{ private var machaine:string; public function maclasse(){ } package imports nom classe classe mère variable d instance constructeur } } public function mafonction():void{ trace(machaine); } fonction perso
Les classes - Structure d une classe Objective-C #import <UIKit/UIKit.h> @interface maclasse : UIView { NSString *machaine; } -(void)mafonction; Import de framework (auto) nom classe classe mère variable d instance déclaration de fonction perso @end maclasse.h #import "maclasse.h" @implementation maclasse -(void)mafonction{ NSLog(maChaine); } Import de classes nom classe fonction perso @end maclasse.m
Les principales différences Les classes - Classe séparée en 2 fichiers : Un header (interface) et un main (implementation) - Pas de constructeur obligatoire - Pas de package - Pas de déclaration d accessibilité (private, public...) - Les fonctions et les variables sont : * Déclarées dans le fichier header * Utilisés dans le fichier main
L interface graphique Interface Builder Création d interface graphique 2.
L interface graphique Comment lier une variable du code à un élément graphique? Principe de IBOutlet - Lien entre code et interface graphique - Déclaré dans le fichier de classe - Récupéré dans Interface Builder
L interface graphique Comment lier une variable du code à un élément graphique? Déclaration d un IBOutlet dans le code #import <UIKit/UIKit.h> @interface maclasse : UIView { UILabel *monchamptexte; } @property (nonatomic, retain) IBOutlet UILabel *monchamptexte @end maclasse.h #import "maclasse.h" @implementation maclasse @synthetize monchamptexte; @end maclasse.m
L interface graphique Comment lier une variable du code à un élément graphique?
L interface graphique Comment lier un évènement d élément graphique au code? Principe de IBAction - Lien entre un évènement d un élément graphique et une fonction du code - Déclaré dans le fichier de classe - Récupéré dans Interface Builder - Semblable à l EventListener de Flash
L interface graphique Comment lier une variable du code à un élément graphique? Déclaration d un IBAction dans le code #import <UIKit/UIKit.h> @interface maclasse : UIView { } -(IBAction)boutonAppuye; @end maclasse.h #import "maclasse.h" @implementation maclasse -(IBAction)boutonAppuye{ NSLog(@ Bouton appuyé ); } @end maclasse.m