IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

gifs avec asphyre


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut gifs avec asphyre
    Salut a tous, j'essaye de faire quelques petits trucs avec asphyre mais le probleme est qu'il n'y a quasiment pas d'aide dur internet et les exemples fournit sont pour la 3D alors que moi j'essaye de faire de la 2D. Pour l'instant j'ai fais une sorte de pong : jusqu'a la pas trop de probleme. Mais maintenant j'essaye de faire évoluer un bonhome dans un décor (tout en 2D). J'ai fais ce perso en gif (animé pour faire croire au mouvement) mais je n'arrive pas a afficher cette gif, comment on fais ?


    Euh tant que j'y suis : dés que j'éxécute mon pong sur un autre pc il y a une erreur avec ce message : Pourquoi ca fais ca et commet y remédier ?

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Il ne faut pas utiliser un GIF animé pour animer ton perso Il te faut une image qui décompose tous les mouvements.
    Va voir ici http://loka.developpez.com/tutoriel/sdl/sprites/ tout en bas, la dernière image montre un exemple de ce que tu dois avoir... Ensuite, tu fais
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AsphyreCanvas1.TexMap(MonImage, pBounds4([La taille de l'image à l'arrivée]), Couleur, TexCoord, fxNone); //ou fxBlend si tu veux de la transparence
    Sachant que TexCoord est de type TTextCoord:
    Membres de TTexCoord:
    X,Y la position du pattern dans l'image
    w,h: sa taille
    Le pattern est la portion d'image que tu veux afficher. Le TTexCoord donne la position et la taille dans l'image de la décomposition

    Pour l'autre problème, on a déjà eu ce genre de problème. Il faut savoir que Asphyre fonctionne avec DirectX9... Donc, DirectX 9.0c et drivers de carte vidéo à jour indispensables
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Ok merci c'est sympas !

    edit : euh tu pourrai pas donner un exemple pour le code stp ?

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par Jeannot Alpin
    edit : euh tu pourrai pas donner un exemple pour le code stp ?
    En fait le X varie de Compteur*PatternWidth et le Y change suivant que le perso monte descend va à gauche ou à droite Sachant que compteur est une variable que tu incrémente toutes les n msecs...

    Exmple directement tiré d'une des classes qu'on est en train d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    var T:TTexCoord;
    begin
      if FVisible then
      begin
        T.Pattern := 0;
        T.x := 0+FPatternSize.X*(FStep div c_StepDelay)*Max(Abs(FDirection.X),Abs(FDirection.Y));
        if (FDirection.X = 0) and (FDirection.Y = 0) then T.y := FPrecRow else
        if FDirection.Y = -1 then T.y := 0 else
        if FDirection.X = 1 then T.y := FPatternSize.Y else
        if FDirection.Y = 1 then T.y := 2*FPatternsize.Y else
          T.y:=3*FPatternSize.Y;
        //t.y:=0;
        FPrecRow := t.y;
        T.w := FPatternSize.X;
        T.h := FPatternSize.Y;
        T.Flip := false;
        T.Mirror := false;
     
        FCanvas.TexMap(FImages[FImageIndex],
          pBounds4(FClientX, FClientY, FPatternSize.X * c_ZoomFactor, FPatternSize.Y * c_ZoomFactor),
          clWhite4, t, fxBlend);
      end;
    Voila j'espère que tu pourras t'en inspirer
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Merci je vais voir tout ca

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Pfffou, je suis désolé de t'ennuyer mais je n'y arrive vraiment pas !
    Si j'ai bien compris : t.w t.h sont les dimensions d'une image du sprite.
    et t.x et t.y sont la position de l'image du sprite qu'on veut.
    Pour changer d'image ont le met dans Onprocess du asphyretimer ?
    et quand je fais ca les images vont beaucoups trop vite et je ne sais pas pourquoi mais elle toute déformée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    asphyrecanvas1.TexMap(asphyreimages1[1],pbounds4(10,10,248,220),clwhite4,t,fxblend);
    dans pbounds4() ont met la taille de l'image ou celle de chaque petite image ?

    Et aussi une question toute conne : comment on fais pour savoir la taille de chaque pattern ?

  7. #7
    Membre confirmé Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Par défaut
    Salut,
    Citation Envoyé par Jeannot Alpin
    Pour changer d'image ont le met dans Onprocess du asphyretimer ?
    non il faut que tu le mettes dans le OnRender du TAsphyreDevice
    Citation Envoyé par Jeannot Alpin
    et quand je fais ca les images vont beaucoups trop vite et je ne sais pas pourquoi mais elle toute déformée.
    c'est parce que tu n'a pas mis la ligne dans le OnRender j'ai eu exactement le même problème il n'y a pas très longtemps
    Citation Envoyé par Jeannot Alpin
    dans pbounds4() ont met la taille de l'image ou celle de chaque petite image ?
    Pbounds4 correspond au dimensions de ce que tu veux afficher or tu ne veux pas afficher toute l'image ou il y a tes petites images (du moins je pense), donc il te faut mettre la taille des petites images.
    Citation Envoyé par Jeannot Alpin
    comment on fais pour savoir la taille de chaque pattern ?
    nous, on la spécifie nous même à la création.

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    ok merci, je vais réessayer !

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    merci ca marche mieux maintenant

    Mais j'ai une derniere question : il faut bien mettre un sleep dans Onrender ?

  10. #10
    Membre confirmé Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Par défaut
    Citation Envoyé par Jeannot Alpin
    il faut bien mettre un sleep dans Onrender ?
    euh... Pourquoi ? moi je n'en met pas et sa marche très bien

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    bah sinon ca va beaucoup trop vite : les images defilent trop vite et on voit rien mais je me suis peut etre planté quelque part !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    procedure TForm1.AsphyreDevice1Render(Sender: TObject);
    begin
    if getkeystate(VK_RIGHT)<0 then
            begin
            t.y:=57 ;
            if t.x>=80 then t.x:=1 ;
            t.x:=t.x+41 ;
            bdroite:=bdroite+1 ;
            //sleep(100) ;
            end;
    if getkeystate(VK_LEFT)<0 then
            begin
            t.y:=167 ;
            if t.x>=80 then t.x:=1 ;
            t.x:=t.x+41 ;
            bdroite:=bdroite-1 ;
            //sleep(100) ;
            end;
    if getkeystate(VK_UP)<0 then
            begin
            t.y:=1 ;
            if t.x>=80 then t.x:=1 ;
            bhaut:=bhaut-1 ;
            t.x:=t.x+41 ;
            //sleep(100) ;
            end;
    if getkeystate(VK_DOWN)<0 then
            begin
            t.y:=115 ;
            if t.x>=80 then t.x:=1 ;
            bhaut:=bhaut+1 ;
            t.x:=t.x+41 ;
            //sleep(100) ;
            end;
     
    asphyrecanvas1.TexMap(asphyreimages1[1],pbounds4(bdroite,bhaut,41,53),clwhite4,t,fxblend);
    end;
    c'est comme ca qu'il faut faire ?

  12. #12
    Membre confirmé Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Par défaut
    Les reconnaissances de touches il faut les mettre dans le OnProcess du Timer normalement, et dans le OnRender il n'y a que les procédures pour afficher les images.

    Un conseil : fait toi une classe pour regrouper ton code. Avant je faisait qu'avec des records et avec le code dans l'unité principale,mais dès que tu compliques un peu le code (collisions, plusieurs sprites etc...) sa devient rapidement ingerrable... Après si tu fait tes classes dans une autre unité il te suffit de l'ajouter dans les uses d'un nouveau projet et tu peux continuer avec tes bases au lieu de tout refaire

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Silk, as tu une demo téléchargeable de ton moteur 2D?

  14. #14
    Membre confirmé Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Par défaut
    ben disont que c'est un peu éclaté actuellement, comme on est plusieurs sur le projet... puisque léo fait les sons, Pedro les menus, et moi l'affichage
    je peux toujours t'envoyer mon executable mais il n'est pas encore très avancé...

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Oui, dépose le sur votre blog je le téléchargerai.

  16. #16
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    Ok remerci encore !

    Je suis encore qu'un débutant et je voudrais savoir qu'est ce que tu entend Sinon moi aussi je vais bien si possible les sources de votre projet dès que ca sera possible, Merci !

  17. #17
    Membre confirmé Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Par défaut
    voilà mes sources actuelles, beaucoup de choses ne sont pas encore codées mais il marche

    sources.zip

    et ce que j'entend par classes c'est comme de créer un composant,
    va voir ici pour plus d'explications :
    http://sjrd.developpez.com/delphi/de...ls/composants/

  18. #18
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Par défaut
    On va examiner ca alors !

Discussions similaires

  1. polybézier avec asphyre 4.1
    Par Archimède dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2009, 18h28
  2. Problème de netteté avec Asphyre 4.1
    Par CBM 64 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 28/05/2009, 13h33
  3. Tkinter, afficher un Gif avec cette architecture.
    Par maori dans le forum Tkinter
    Réponses: 8
    Dernier message: 06/01/2009, 15h09
  4. Problème avec Asphyre
    Par DiDi3 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 29/04/2008, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo