|
|
|||||||||||||||||||||||||||||||
|
Un composant ActiveX est aussi appellé un contrôle ActiveX, comme les contrôles Listview, Treeview, Liaison série, etc... Un contrôle est visuel, il doit être placé dans un conteneur (généralement une fenêtre eVB) pour être exploitable et généralement s'affiche lors de l'exécution du programme qui l'utilise (certains contrôles ne s'affichent pas, comme par exemple le contrôle Timer). Les composants ActiveX visuels sont des fichiers avec une extension '.OCX' sur PC et '.DLL' sur le Pocket PC.
Pour commencer, vous devez télécharger ASpriteCE.
ou aller sur la page ASpriteCE de SpriteHand Software, rubrique téléchargement.
Une fois que vous avez téléchargé le fichier "aspritece_1_0_02.zip" vous devez le dézipper (je sais, ce n'est pas français). Perso, je l'ai dézippé dans un dossier du même nom, que j'ai placé dans le dossier "C:\Windows CE Tools\wce300\MS Pocket PC" de ma machine de développement, là au moins, il est bien rangé. Depuis ce dossier, vous devez lancer le script "Install.vbs" qui s'occupe d'ajouter dans la base de registre de votre PC toutes les entrées nécessaires.
Puis, depuis cette liste, exécutez un click droit et choisissez dans le menu l'item "Add New Control". Vous devez allez chercher dans le dossier "Bin" de ASpriteCE sur votre PC le fichier "ASpriteCE.dll" correspondant au processeur de votre Pocket PC.
Dans l'événement "Form_Load" de la feuille où se trouve le contrôle. Ici, le contrôle a pour nom "Game1". C'est la méthode "DrawInit" qui se charge d'initialiser complètement le contrôle, et il est impératif de bien lancer cette commande avant toutes les autres. Cette méthode prend comme paramètre le hWnd de la feuille où il est posé : Rem On place le contrôle
en haut à gaucge Rem On lui donne la
même taille que l'image Rem Initialisation du
contrôle
Nous allons ensuite charger le fond. C'est sur lui que les sprites seront dessinés. C'est la méthode "DrawBackgroundImage" qui charge le fond : Rem Chargement du fond
Petit rappel : Les sprites sont des dessins, qui peuvent être animées et qui sont gérés sous forme de plans, ce qui permet de créer des sprites qui passent dernière d'autres sprites, avec donc des zones transparentes. Le sprite est créé a partir d'une image qui peut contenir, dans le cas d'une animation, la somme de toutes les images nécessaire à l'animation. J'ai repris dans les exemples fournis avec le contrôle le fichier star.gif qui est formé des 8 images de l'animation d'une étoile qui affiche en son centre les chiffres 1 à 8 pendant l'animation :
Les deux sprites que nous allons créer, utiliseront le même fichier d'image, "Star.gif". La création d'un sprite s'effectue avec la méthode "CreateSprite" qui prend comme paramètres le numéro du sprite (commence à zéro), le fichier d'image, les coordonnées (x,y) du coin suppérieur gauche de la première image de fichier d'image, la largeur et la hauteur du sprite à l'écran, le nombre de frames dans le fichier d'image, et le nombre de frames par ligne (si il y a plusieurs lignes dans le fichier d'image). Les sprites créés avec le fichier "star.gif" sont de taille 16x15 : Rem Création du 1er Sprite Rem On fait maintenant bouger les sprites,
dans 2 directions différentes Lors de la création d'un sprite, il faut utiliser la métode "SpriteSetPosition" pour le placer correctement à l'écran. On indique aussi que le sprite n°1 (code 0) sera mis à jour à chaque échéance du timer central du contrôle, alors que le sprite n°2 (code 1) sera mis à jour toutes les 2 échéances du timer central. Pour cela, on utilise la propriété "SpriteFrameRate(Numero sprite)" La méthode "TimerStartTimer" lance le timer central du contrôle, celui qui donne vie à tous les sprites que vous créez. La valeur 50 indique que le timer se déclenchera tous les 1000/50=20 fois par secondes. Nos sprites sont par défaut immobiles. Avec la méthode "SpriteSetDirection" vous pouvez définir pour chaque sprite la direction qu'il doit prendre et à quelle vitesse. La direction est définie de la manière suivante :
et la vitesse est le nombre de pixels qui
changent entre 2 étapes du déplacement (ici 5 pour le 1er
sprite et 10 pour le 2ème). A partir du moment où vous avez défini un comportement pour vos sprite (ici il sont animés tous les deux et se déplacent), le coeur du contrôle applique à chaque cycle toutes les modifications nécessaires. Si on ne fait rien, nos 2 sprites vont très vite sortir de l'écran ! Il faut donc réagir en cas de collision avec l'un des bords de l'écran. Pour celà, le contrôle génère un événement particulier "SpriteCollisionEdge". Cet événement indique quel sprite est concerné par la collision, et quel bord de l'écran est en collision. Chaque bord de l'écran possède un numéro :
Dans le code qui suit, nous faisons en sorte que le sprite rebondisse sur les bords de l'écran : Private Sub Game1_SpriteCollisionEdge(ByVal lSpriteNum As Long, ByVal iEdges As Long)
Dim wAngle As Integer
Dim wVelocity As Integer
Call Game1.SpriteGetDirection(lSpriteNum, wAngle, wVelocity)
Select Case iEdges
Case 3, 2
If wAngle = 45 Then
wAngle = 315
ElseIf wAngle = 135 Then
wAngle = 225
End If
Case 7, 6
If wAngle = 315 Then
wAngle = 45
ElseIf wAngle = 225 Then
wAngle = 135
End If
Case 1, 8
If wAngle = 315 Then
wAngle = 225
ElseIf wAngle = 45 Then
wAngle = 135
End If
Case 5, 4
If wAngle = 135 Then
wAngle = 45
ElseIf wAngle = 225 Then
wAngle = 315
End If
End Select
Call Game1.SpriteSetDirection(lSpriteNum, wAngle, wVelocity)
End Sub
Nous continuerons la gestion des sprites dans la 2ème partie. |
|||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||
|
Copyright
2001 - Tous droits réservés
|
|||||||||||||||||||||||||||||||
|
iPAQ
est un produit de COMPAQ.
|