coin-coin.net/dev/

05 déc 2010

Que la lumière soit // La classe Sprite et les classes de chiffre

Classé dans : ActionScript, Bible — Leonerep @ 14:00

Être Dieu le père, c’est bien, montrer son univers pour craner devant les autres divinités, c’est mieux. D’autant que l’on a toujours rien compilé de concret, cela commence à devenir frustrant. L’impuissance divine est pire que tout. C’est la qu’intervient la classe Sprite (mais on ne compilera pas pour autant tout de suite, ô cruauté).


Comme toutes les classes, Sprite est un objet, mais celui ci a une particularité spécial : être un objet visible avec les yeux. En effet il y toute sorte de classe basique : Array, Number, Event, ect… nous y reviendront. Mais seules quelques unes d’entre elles ont la particularité d’être visible, Sprite en fait partit.

On utilise souvent cette classe pour créer des objets visibles alors qu’il y en a d’autre (MovieClip, TextField, Bitmap, etc…), car c’est l’une des plus simples et des plus souples à utiliser. Alors pour en revenir à notre classe Lumiere, celle ci est donc forcement visible, la question qui s’impose est donc simple : comment la rendre visible ?

Nous étendons simplement la classe Lumiere de Sprite. Comme abordé dans les premiers versets de cette bible, cela permet de faire une copie de classe pour qu’elle obtienne les mêmes propriétés, mais avec l’intention d’en faire quelque chose en plus. Dans le cas qui nous intéresse : faire apparaitre de la lumière mais commençons par le commencement :

package
{

import flash.display.Sprite;
public class Lumiere extends Sprite
{

public function Lumiere()
{
}

}

}

Pas la peine d’expliquer ce code, c’est le même que pour la classe Main, pour résumer : Lumiere à maintenant les mêmes propriétés que Sprite, notamment celle d’être visible. Mais, on peut comprendre maintenant pourquoi la classe Main est automatiquement étendu de Sprite, car la finalité d’une programmation AS3 est de produire un “film“, quelque chose de visible. Donc l’univers (Main) doit être visible lui même, sinon, rien ne va plus ! Tout les langages informatique ne fonctionnent pas comme cela, la classe de base n’est pas forcement celle ou tout se repose pour que quelque chose soit vu. Mais l’AS3 si, c’est l’une des nombreuses différences entre tout ces langages, malgré leur ressemblances, cela fait partit de leur fonctionnement. Dans Flash tout est axé vers le visuel, du coup la classe de base est une classe visuelle.

A propos de la classe Sprite, celle ci n’a pas que la capacité à être vue. Elle en a d’autres, des capacités extrêmement intéressante : par exemple elle contient la propriété (ou variable) appelé graphics, cet objet (de la bien nommée classe Graphics) permet de dessiner ! On appelle ça l’API de dessin, on va y venir très vite.

Mais avant de dessine de la lumière à proprement parler, une petite révision des bases Mathématiques s’impose, rien de méchant. Faisons un tour d’horizon de ce que nous propose l’ActionScript3 au niveau des classes de nombres :

Number

Cette classe représente tous les nombres qui peuvent avoir une virgule, c’est important de savoir si votre nombre aura une virgule ou pas, les logiciels manipulant beaucoup de nombres (ne serait-ce que pour indiquer les positions des éléments dans une scène), cela peut avoir beaucoup d’influence sur les ressources du processeur que nécessitera votre logiciel.

Number recouvrant tout les nombres même avec des chiffres après la virgule on comprend que celle ci consommera plus que la classe de nombres qui n’en a pas (de chiffres après la virgule). Ce nombre est limité en

grandeur de -2147483648 à 2147483647 pour être exacte, avec assez de chiffres après la virgule pour que ce soit précis. Cependant vous noterez l’impossibilité de la classe Number à être exacte et que 1 peut facilement devenir 1,000000000001 suite à un caprice du processeur, c’est vrai pour tout les langages de programmation (c’est une histoire d’électronique, bien trop complexe et hors propos pour être expliqué). Le fait est que la classe Number n’est pas vouée à l’exactitude justement, et existe pour les calculs complexe avec des chiffres apres la virgules sans fin. Pour l’exactitude, utilisez la classe suivante.
int

Malgré sa majuscule inexistante int est une classe au même titre que Number, elle représente les nombres entiers c’est à dire sans chiffre après la virgule. Cet entier est limité en grandeur, de -2147483648 à 2147483647. Les plus observateurs et curieux se demanderont pourquoi int n’a pas de majuscule ? Les plus médisants diront que c’est parce qu’Adobe à salopé le boulot, pour la petite histoire l’ActionScript2 (comme d’autre langage) note la classe int, avec sa majuscule. C’est peut être pour une facilité de notation, la classe int étant extrêmement courante et peut être pas jugée importante en dépit de l’incohérence de notation que cela peut amener. Dieu seul le sait.
uint

Également une classe sans majuscule, elle représente les entiers positifs, elle prend en compte tout les chiffres de 0 à 4294967295.
En application ça donne :

var nombre:Number = 0.2;
var entierPositif:uint = 24;
var entier:int = -340;

ou encore

var color:int = 0xf3d73d;

Ici l’on crée des variables, c’est var qui nous l’indique.

:Number :uint :int sont les types que renvoie la variable.

enfin ou nous renvoie l’égalité avec les valeurs des nombres. Mais le quatrième exemple est particulier.

En quoi 0xf3d73d est un nombre ? On peut légitimement se poser la question : c’est un nombre en hexadécimal. En principe nous comptons en décimal, c’est à dire : 0 1 2 3 4 5 6 7 9, puis on rajoute
les dizaines pour poursuivre : 10 11 12 13 14 15 16 17 18 19.  L’hexadécimal c’est la même chose, sauf que l’on ne s’arrête pas à 9 pour recommencer mais à « f », en pratique cela donne : 0 1 2 3 4 5 6 7 9 a b c d e f, puis on revient rajoute les dizaines : 10 11 12 13 14 15 16 17 19 1a 1b 1c 1d 1e 1f, etc…

Alors deux choses : la première qu’est ce qu’est ce 0x ? x ne faisant pas partit du comptage hexadécimal. En fait 0x permet de déclarer « attention ce qui suit est un nombre hexadécimal », s’il n’y avait pas ce 0x ce serait un simple nombre en décimal, et ça foutrait un beau boxons vu que a b c d e f ne sont pas vraiment des chiffres… finalement, le vrai nombre en question est : f3d73d. On notera que 0x n’est pas la seul introduction, cela change selon ou est ce nombre, par exemple il y a #, comme utilisé dans la couleur de configuration abordée dans les premiers verset de cette bible.

La deuxième interrogation logique est : pourquoi faire un chiffre en hexadécimal ? C’est manifestement pas hyper parlant. le nom de la variable indique color, c’est parce qu’elle est sensé représentée une couleur. une couleur en informatique est représentée par un nombre. De préférence hexadécimal, plus précisément par 3 nombres hexadécimaux de deux chiffres mis les un à coté des autres. Ces trois nombres représentent le niveau des 3 couleurs de base RVB pour Rouge Vert Bleu. Pour afficher du noir par exemple, il n’y aucune couleur, soit pas de rouge, ni vert, ni bleu, soit 00, 00, et 00. le noir en informatique donne donc : 000000. A l’inverse le Blanc contient le maximum des trois couleurs, l’échelle des couleurs allant de 00 (rien) à ff (max), le blanc s’écrit donc : ffffff.

Ici nous avons f3 pour le rouge, d7 pour le vert, et 3d pour le bleu. Ce qui nous donne au final une sorte de jaune. Normal, on était partit pour dessiner de la lumière. il n’y a pas a deviner ces couleurs au hasard, on peut les récupérer dans n’importe qu’elle logiciel de dessin et demander la valeur RVB d’une couleur. Nous abordons la couleur, car ce genre de variable est courante, tellement courante que l’on a déjà vu trainé avec la fameuse notation “#”. Pour aller plus loin dans les nombre représentant les couleurs, il faut savoir qu’il existe une autre notation de la couleur, l’ARVB, composé de 4 nombres de 2 chiffres représentant respectivement la transparence (A pour Alpha), et le rouge vert bleu classique. On notera que la notation de couleur ARVB ne peut se faire qu’en uint, car celle ci dépasse allègrement la limitation supérieur des int.

Pour finir, penchons nous sur la classe Math. Cette dernière contient des méthodes de calcul, et certaines propriété. C’est peut être l’occasion de regarder la documentation pour savoir qu’elle sont les méthodes de cette classe. Ces méthodes sont celle que l’on retrouve sur n’importe qu’elle calculatrice scientifique, par exemple :
Math.cos(), Math.sin()  et tout les autres truchement trigonométriques.

Il y a aussi les constantes mathématiques bien connue, comme Math.PI, il est noté tout en majuscule. C’est une autre convention d’écriture en programmation, on note ainsi les propriété que l’on appelle “constante”, elles sont immuables. Voila pour ce petit tour d’horizon, fort de ces connaissances essentielles, nous allons enfin pouvoir dessiner quelque chose au verset suivant.

  • spacer
  • spacer
  • spacer
  • spacer
  • spacer
  • spacer
  • spacer
  • Partagez cet article
Commentaires (2)

2 commentaires »

  1. bonjours je trouves que c’est trés beau se ke vous fait mé je voudrés savoir svp pourkoi ya des signes bizzare comme sa { et comme sa }

    Commentaire par japprends le flash — 13 décembre 2010 @ 23:39

  2. c’est expliqué dans le premier chapitre :
    coin-coin.net/dev/2010/03/22/bible-2/

    Commentaire par Leonerep — 13 décembre 2010 @ 23:43

Flux RSS des commentaires de cet article. URL de rétrolien

Laisser un commentaire

Propulsé par WordPress

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.