Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 25 Avr 2016 - 14:18 | |
| Klaus, Désolé si je t' ai blessé, ce n' était pas du tout mon but. Je me doute bien du boulot que c' est de gérer KGF et comme tous je t' en suis reconnaissant. Je souhaitais juste retrouver les scrollbar originales de l' objet StringGrid. Les deux paliatifs qui ont vu le jour avec l' ajout des icônes dans le StringGrid ne me plaisant pas. Peut être est il possible d' ajouter une fonction pour les réactiver "manuellement", si on ne se sert pas des fonctions pour les icônes dans le StringGrid ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 25 Avr 2016 - 14:26 | |
| - Citation :
- Désolé si je t' ai blessé, ce n' était pas du tout mon but.
Non, ne t'inquiète pas. Tu ne m'as pas blessé. Je voulais juste clarifier le contexte dans lequel j'interviens. - Citation :
- Je souhaitais juste retrouver les scrollbar originales de l' objet StringGrid.
Désolé, techniquement impossible. Et c'est sans aucun lien avec les icônes... Mais comme je l'ai dit, il y aura prochainement une option pour inhiber l'apparition des scrollbars de mon crû, et tu pourras alors utiliser des scrollbars Panoramic. Pas de problème à ce niveau-là. Et je répète: l'utilisation des icônes est une option qui n'est nullement liée aux autres fonctions du grid, ni à fortiori à un autre objet comme une toolbar. C'est totalement indépendant. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Avr 2016 - 13:19 | |
| KGF.dll V6.39 du 26/04/2016 StringGrid version V10 du 26/04/2016Nouveautés: - GridFunction: nouveau code 31: afficher/cacher les scrollbars automatiquesModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Ceci permet d'utiliser les scrollbars de Panoramic pour faire le défilement du Grid, au lieu d'utiliser les scrollbars automatiques, si leur aspect ne convient pas. L'affichage est dynamique: il peut être interdit ou rétabli à tout moment. Prerelease de ma version de Scene2D et des SpritesCette version apporte également une première version (pas encre documentée) de mon implémentation d'un objet Scene2d et des Sprites. A ce jour, on a les fonctions suivantes: - Code:
-
SC2D% = dll_call1("CreateScene2D",handle(dest%)) ' dSC2D% = identifiant du Scene2D ' dest% = numéro d'objet Panoramic recevant le Scene2D
res% = dll_call6("ResizeScene2D",SC2D%,x%,y%,w%,h%,vis%) ' dSC2D% = identifiant du Scene2D ' x%,y% = coordonnées du coin en haut à gauche ' w%,h% = dimensions ' vis% = visibilité 0=invisible 1=visible
res% = dll_call2("LoadBackgroundToSC2D",SC2D%,adr(back$)) ' dSC2D% = identifiant du Scene2D ' back$ = nom et chemin vers un fichier JPG pour l'image de fond
res% = dll_call5("CreateSpriteInScene2D",SC2D%,x%,y%,plan%,adr(sprite$)) ' dSC2D% = identifiant du Scene2D ' x%,y% = coordonnées du coin en haut à gauche ' plan% = numéro de "couche" (pas encore utilisé) ' sprite$ = nom et chemin vers un fichier BMP avec l'image du sprite (noir = couleur de transparence)
res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,ind%,vis%,ord%) ' dSC2D% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
Et voici un programme de démo utilisant les images placées dans mon WebDav, dossier Jeux\Sprites: - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout
dim res%, SC2D%
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2,10 : left 2,110 : caption 2,"En avant" : on_click 2,avant button 3 : top 3,10 : left 3,210 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4,10 : left 4,310 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5,10 : left 5,410 : caption 5,"Montrer tout" : on_click 5,montrertout
SC2D% = dll_call1("CreateScene2D",handle(0)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToSC2D",SC2D%,adr(back$))
res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite0$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite1$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
arriere: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,M1%) return avant: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1) return cacher: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,0,0) return cachertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,0) return
montrertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,0) return
Prochaine étape: - fournir des fonctions permettant le déplacement d'un sprite par programme - rendre un sprite sélectionnable ou non - rendre un sprite déplaçable par la souris ou non - changer les dimensions d'un sprite | |
| | | Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Panoramic et les sprites. Mar 26 Avr 2016 - 13:40 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Avr 2016 - 14:28 | |
| Merci pour le lien, Pedro. Je vais regarder cela. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Avr 2016 - 17:40 | |
| Merci Klaus pour ce début de fonctions pour la 2D.
Si ça ne te dérange pas, continues d'envoyer les exemples et les fonctions, comme tu viens de le faire, car je mets tout ça dans un dossier pour faire des essais.
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Avr 2016 - 17:57 | |
| KGF.dll V6.40 du 26/04/2016Nouveautés: Scene2D et Sprites: - nouvelle fonction ChangeSpritePositionInScene2D pour des déplacements programmés - nouvelle fonction SetInterfaceOfScene2D pour les évènements - nouvelle fonction ChangeSpriteAttributesInScene2D pour gérer visibilité, fixité etc.Modules modifiés: KGF.dllLa doc et les sources sources sont à jour. On a maintenant un évènement (via le ON_CHANGE d'un EDIT caché par HIDE...) pour recevoir les notifications sur la sélection et/ou le déplacement d'un sprite. On peut aussi rendre un sprite non sélectionnable par la souris, et/ou non déplaçable par la souris. Par contre, programmatiquement, cela reste possible via la nouvelle fonction ChangeSpritePositionInScene2D. L'évènement utilisé fonctionne à partir d'une zone mémoire qui est actuellement de 8 entiers contigus. Ceci est réalisé sous forme d'un tableau d'entiers avec dim ...(7). Par précaution, le dernier mot n'est pas utilisé actuellement. Voici un extrait des commentaires du source Delphi: L'interface Panoramic est un tableau d'entiers en une seule dimension. La longueur de ce tableau evoluera avec les versions de Scene2D. Elle est déterminée par un appel à la présente fonction, avec iadr=0. La fonction retourne alors la longueur requise. L'interface a le format suivant: offset signification 0 longueur 1 handle du EDIT pour les signalements 2 numéro du sprite sélectionné 3 x (position horizontale du coin en haut à gauche du sprite) 4 y (position verticale du coin en haut à gauche du sprite) 5 w (largeur du sprite) 6 h (hauteur du sprite) 7 numéro du sprite collisionnant (ou 0 si pas de collision)Et voici le programme de démo: - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout, label event, fixe, mobile, mobiletout label deplacer
dim res%, SC2D%, SC2D_PS%
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2,10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3,10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4,10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5,10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6,10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7,10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8,10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9,40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite0$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite1$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return
Dernière édition par Klaus le Mar 26 Avr 2016 - 19:51, édité 2 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Avr 2016 - 19:50 | |
| KGF.dll V6.41 du 26/04/2016Nouveautés: Scene2D et Sprites: - gestion des collisions (par rectangle englobant) - gestion d'une notion de "résistance" au niveau des collisionsModules modifiés: KGF.dll
La doc ext inchangée. Les sources sources sont à jour. Chaque sprite est affublée d'une notion de "résistance" à sa création (ultérieurement, on pourra changer cette valeur). C'est une valeur entière. Un sprite entre en collision avec un autre si sa résistance est inférieure ou égale à la résistance du sprite touché. Dans le programme de démo, j'ai donné les résistances suivantes aux 3 sprites: sprite 1: 200 sprite 2: 100 sprite 3: 0 Le sprite 3 entr donc en collision avec les deux autres. Le sprite 2 entre en collision seulement avec le sprite 1, et le sprite 1 ne déclenche aucune collision - il pénètre tout. Ceci permet de définir des sprites qui sont des murs impénétrables, des portes pénétrables pour certains et pas d'autres, des zones de décor pénétrables par tous etc. - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout, label event, fixe, mobile, mobiletout label deplacer
dim res%, SC2D%, SC2D_PS%
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2,10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3,10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4,10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5,10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6,10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7,10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8,10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9,40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" collision: "+str$(SC2D_Panoramic%(7)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Mer 27 Avr 2016 - 12:28 | |
| C'est très chouette Klaus. Ca parait super simple à mettre en oeuvre. Donnez moi du temps pour que je puisse programmer et tester... J'en ai trop envie | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 27 Avr 2016 - 14:31 | |
| KGF.dll V6.42 du 27/04/2016Nouveautés: Scene2D et Sprites: - nouvelle fonction GetVersionOfScene2D - retourner une identification de la version du Scene2D - nouvelle fonction ChangeSpriteSizeInScene2D - effet zoom déformant avant/arrièreModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. GetVersionOfScene2D:- retourne le numéro de version comme résultat numérique. - un seul paramètre: l'adresse d'une variable string recevant la description textuelle de la version. Si ce paramètre est 0, seule la version numérique sera retournée. ChangeSpriteSizeInScene2D:permet d'imposer de nouvelles dimensions au sprite choisi. 4 paramètres: 1. identifiant du Scene2D 2. numéro du sprite (ou 0 pour le sprite actuellement sélectionné) 3. nouvelle largeur en pixels 4. nouvelle hauteur en pixels Le changement de dimension se fait en déformant le sprite d'origine si besoin est Le programme de démo affiche la version dans la barre de titre, et montre des boutons de zoom avant et arrière (j'ai imposé 3/2 en avant et 2/3 en arrière, mais on peut faire n'importe quoi): - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout, label event, fixe, mobile, mobiletout, zoomplus, zoommoins label deplacer
dim res%, SC2D%, SC2D_PS%, w%, h% dim sversion$, iversion% : sversion$ = string$(255," ")
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) caption 0,trim$(sversion$)
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return zoomplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*3)/2 h% = (SC2D_Panoramic%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return zoommoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*2)/3 h% = (SC2D_Panoramic%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 27 Avr 2016 - 23:13 | |
| KGF.dll V6.43 du 27/04/2016Nouveautés: Scene2D et Sprites: - nouvelle fonction DefineSpriteContactInScene2d - définir des zones de "contact" dans un spriteModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Cette nouvelle fonction permet de définir une ou plusieurs zones de contact dans n'importe quel sprite. Dès le moment où au moins une zone de contact est définie dans un sprite, seule ces zones réagissent pour une collision, et non plus le rectangle global du sprite. Le programme de démo définit une zone de contact pour le sprite 1 (l'étoile avec le smiley à l'intérieur). Cette zone de contact est le centre (le visage). Le contact ne se fait donc plus sur les pointes ou le bord (invisible) du carré englobant, mais seulement sur la zone centrale. Et l'interface met à disposition non seulement le numéro du sprite collisionné, mais également le numéro de sa zone de contact touchée. Ceci est affiché dans l'information en bas du Scene2D: - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout, label event, fixe, mobile, mobiletout, zoomplus, zoommoins label deplacer
dim res%, SC2D%, SC2D_PS%, w%, h% dim sversion$, iversion% : sversion$ = string$(255," ")
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) caption 0,trim$(sversion$)
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins
edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,30,0,0,adr(sprite2$))
res% = dll_call6("DefineSpriteContactInScene2d",SC2D%,1,70,70,140,140)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return zoomplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*3)/2 h% = (SC2D_Panoramic%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return zoommoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*2)/3 h% = (SC2D_Panoramic%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 12:10 | |
| @Klaus, Je viens de tenter un premier test, pour le moment ça coince. J'ai récupéré KGF.DLL sur ton nouvel hébergeur. J'avais déjà les images, j'ai juste renommé "fond.jpg" par "SC2D_fond.jpg". Pas moyen d'envoyer une image sur le forum ce matin ! Je te décris le problème: Au lancement (avec Panoramic 09.27i7) j'ai l'erreur suivante "(29) Nor correct aritmetic expression: Error in fonction Line 54" Voici la ligne 54: - Code:
-
res% = dll_call2("LoadBackgroundToSC2D",SC2D%,adr(back$))
Le code complet: - Code:
-
' SC2D% = dll_call1("CreateScene2D",handle(dest%)) ' dSC2D% = identifiant du Scene2D ' dest% = numéro d'objet Panoramic recevant le Scene2D
' res% = dll_call6("ResizeScene2D",SC2D%,x%,y%,w%,h%,vis%) ' dSC2D% = identifiant du Scene2D ' x%,y% = coordonnées du coin en haut à gauche ' w%,h% = dimensions ' vis% = visibilité 0=invisible 1=visible
' res% = dll_call2("LoadBackgroundToSC2D",SC2D%,adr(back$)) ' dSC2D% = identifiant du Scene2D ' back$ = nom et chemin vers un fichier JPG pour l'image de fond
' res% = dll_call5("CreateSpriteInScene2D",SC2D%,x%,y%,plan%,adr(sprite$)) ' dSC2D% = identifiant du Scene2D ' x%,y% = coordonnées du coin en haut à gauche ' plan% = numéro de "couche" (pas encore utilisé) ' sprite$ = nom et chemin vers un fichier BMP avec l'image du sprite (noir = couleur de transparence)
' res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,ind%,vis%,ord%) ' dSC2D% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement
rem ================================================================================= ' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout
dim res%, SC2D%
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll"
button 1 : top 1,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2,10 : left 2,110 : caption 2,"En avant" : on_click 2,avant button 3 : top 3,10 : left 3,210 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4,10 : left 4,310 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5,10 : left 5,410 : caption 5,"Montrer tout" : on_click 5,montrertout
SC2D% = dll_call1("CreateScene2D",handle(0)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToSC2D",SC2D%,adr(back$))
res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite0$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite1$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
arriere: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,M1%) return avant: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1) return cacher: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,0,0) return cachertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,0) return
montrertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,0) return
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 12:28 | |
| Essaie comme ceci: - Code:
-
res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$)) En effet, le nom de la fonction a changé... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 12:39 | |
| KGF.dll V6.44 du 28/04/2016Nouveautés: Scene2D et Sprites: - gestion conditionnelle du blocage du mouvement d'un sprite lors d'un contact avec un autre - nouvelles fonctions: - ChangeSpriteImageInScene2D - remplacer l'image d'un sprite - ChangeSpriteOptionsInScene2D - nouveaux paramétrages pour un spriteModules modifiés: KGF.dll
La doc est inchangée. Les sources sources sont à jour. ChangeSpriteImageInScene2D: on passe adr(fichier$) avec fichier$ contenant le nom et le chemin vers un fichier BMP, ou un passe 0 (zéro) rt le programme prend l'image contenue dans le presse-papier ChangeSpriteOptionsInScene2D: pour le moment, un seul paramètre. Par défaut, un sprite (ou une zone de contact d'un sprite) est impénétrable et bloque le mouvement d'un sprite collisionnant. Mais on peut rendre le sprite collisionné "pénétrable" par le premier paramètre (à 0) de cette fonction. Dans le programme de démo suivant, le sprite 1 (l'étoile avec le smiley) a toujours une zone de contact au centre, mais cette zone est rendue pénétrable. Les autres sprites sont impénétrables en cas de collision. Et il y a un 4ème sprite dont l'image est téléchargeable dans mon WebDav, dossier Jeux\Test_sprites: Crane.bmp. Et il y a un bouton permettant de charger vos propres images dans n'importe lequel de ces sprites, après en avoir sélectionné un par un clic. - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout, label event, fixe, mobile, mobiletout, zoomplus, zoommoins, changerimg label deplacer, rotateplus, rotatemoins
dim res%, SC2D%, SC2D_PS%, w%, h%, f$ dim sversion$, iversion% : sversion$ = string$(255," ")
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) caption 0,trim$(sversion$)
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg
if 1=2 button 13 : top 13,160 : left 13,640 : caption 13,"Tourner +15°" : on_click 13,rotateplus button 14 : top 14,190 : left 14,640 : caption 14,"Tourner -15°" : on_click 14,rotatemoins end_if
open_dialog 97 edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2d",SC2D%,1,70,70,70,70) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return zoomplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*3)/2 h% = (SC2D_Panoramic%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return zoommoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*2)/3 h% = (SC2D_Panoramic%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return changerimg: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call3("ChangeSpriteImageInScene2D",SC2D%,0,adr(f$)) return rotateplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call3("RotateSpriteInScene2D",SC2D%,0,15) return rotatemoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call3("RotateSpriteInScene2D",SC2D%,0,0-15) return
Ca devient assez sympa, non ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 13:43 | |
| Je suis toujours sur l'exemple 1, Le chargement de l'image de fond c'est OK. Maintenant il y a un problème pour la création des sprites. essai le code ci_desous: (j'ai pisté avec stop, il est en ligne 26) Si on enlève le stop: FORM 0 apparaît une seconde, puis le programme s'arrête. (pas de trace de Panoramic.exe dans le gestionnaire de taches, donc le programme est bien fermé complètement) Le code: - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout
dim res%, SC2D%
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp"
width 0,800 : height 0,700
button 1 : top 1,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2,10 : left 2,110 : caption 2,"En avant" : on_click 2,avant button 3 : top 3,10 : left 3,210 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4,10 : left 4,310 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5,10 : left 5,410 : caption 5,"Montrer tout" : on_click 5,montrertout
dll_on "KGF.dll"
SC2D% = dll_call1("CreateScene2D",handle(0)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$)) stop res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite0$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite1$)) res% = dll_call5("CreateSpriteInScene2D",SC2D%,50,30,0,adr(sprite2$))
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
arriere: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,M1%) return avant: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1) return cacher: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,0,0,0) return cachertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,0) return
montrertout: res% = dll_call4("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,0) return
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 13:49 | |
| Je te conseille de toujours prendre le dernier programme de démo publié. La gestion du Scene2D et des Sprites est encore en phase de "conception", et des éléments peuvent changer, sans préavis, d'une version à l'autre. Comme par exemple les paramètres d'appel des fonctions etc. Dans le cas présent, ce qui a changé, c'est le format de ce que j'appelle "l'interface" qui est un tableau d'entiers d'une longueur précise et qui est chargé de façon automatique par KGF.dll. Si tu rencontres des problèmes, une seule solution: prends la dernière version du programme de démo, et ça marchera.
Et regarde la version que le publie maintenant. Si tu as aimé la version actuelle, tu vas adorer la nouvelle version ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 13:55 | |
| KGF.dll V6.45 du 28/04/2016Nouveautés: - ChangeSpriteImageInScene2D -ajout de la gestion d'une ImageListModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Il y a maintenant un paramètre supplémentaire: - Code:
-
res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,ind%,act%,par%) SC2D: identifiant du Scene2D ind%: indice du sprite (ou 0 pour le sprite sélectionné) act%: action: 0=par%=adr(bmp$) 1=IL% 2=indice d'image dans IL% par%: valeur en fonction de act% IL% est une ImageList créée par KGF.dll. Dans le programme de démo, j'utilise KGF.ilb (16x16 pixels), mais on peut utiliser n'importe quelle ImageList, à condition que la dimension des images soit bien indiquée. - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout label event, fixe, mobile, mobiletout, zoomplus, zoommoins label changerimg, imagelist, changerilb label deplacer, rotateplus, rotatemoins
dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$ dim sversion$, iversion% : sversion$ = string$(255," ")
dim M1% : M1% = 0 - 1 dim back$ : back$ = "SC2D_fond.jpg" dim sprite0$ : sprite0$ = "SC2D_sprite4.bmp" dim sprite1$ : sprite1$ = "SC2D_sprite8.bmp" dim sprite2$ : sprite2$ = "SC2D_sprite3.bmp" dim sprite3$ : sprite3$ = "crane.bmp"
width 0,800 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) caption 0,trim$(sversion$)
button 1 : top 1 ,10 : left 1,10 : caption 1,"En arrière" : on_click 1,arriere button 2 : top 2, 10 : left 2,100 : caption 2,"En avant" : on_click 2,avant button 3 : top 3, 10 : left 3,190 : caption 3,"Cacher" : on_click 3,cacher button 4 : top 4, 10 : left 4,280 : caption 4,"Cacher tout" : on_click 4,cachertout button 5 : top 5, 10 : left 5,370 : caption 5,"Montrer tout" : on_click 5,montrertout button 6 : top 6, 10 : left 6,460 : caption 6,"Fixe" : on_click 6,fixe button 7 : top 7, 10 : left 7,550 : caption 7,"Mobile" : on_click 7,mobile button 8 : top 8, 10 : left 8,640 : caption 8,"Mobile tout" : on_click 8,mobiletout
button 9 : top 9, 40 : left 9,640 : caption 9,"Déplacer" : on_click 9,deplacer button 10 : top 10, 70 : left 10,640 : caption 10,"Zoom +" : on_click 10,zoomplus button 11 : top 11,100 : left 11,640 : caption 11,"Zoom -" : on_click 11,zoommoins button 12 : top 12,130 : left 12,640 : caption 12,"Changer img" : on_click 12,changerimg button 13 : top 13,160 : left 13,640 : caption 13,"ImageList" : on_click 13,imagelist button 14 : top 14,190 : left 14,640 : caption 14,"Changer ilb" : on_click 14,changerilb
if 1=2 button 44 : top 44,220 : left 44,640 : caption 44,"Tourner +15°" : on_click 44,rotateplus button 45 : top 45,250 : left 45,640 : caption 45,"Tourner -15°" : on_click 45,rotatemoins end_if
open_dialog 97 edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1) res% = dll_call2("LoadBackgroundToScene2D",SC2D%,adr(back$))
res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,adr(sprite0$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,150,30,0,100,adr(sprite1$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,250,30,0, 0,adr(sprite2$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,350,30,0,200,adr(sprite3$))
res% = dll_call6("DefineSpriteContactInScene2d",SC2D%,1,70,70,70,70) res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
end
' ChangeSpriteAttributesInScene2D(id%,ind%,vis%,sel%,mov%,ord%) ' id% = identifiant du Scene2D ' ind% = indice du sprite (1,2,3) ' ou 0 pour sprite sélectionné ' ou -1 pour tous les sprites, uniquement pour la visibilité ' vis% = 0 pour invisible ou 1 pour visible ' sel% = 0 pour non sélectionnable et 1 pour sélectionnable ' mov% = 0 pour non déplaçable et 1 pour déplaçable ' ord% = 1 pour "en avant" ou -1 pour "en arrière" ou 0 pour "pas de changement '
event: if text$(98)="status" caption 99,"sprite "+str$(SC2D_Panoramic%(2))+" à "+str$(SC2D_Panoramic%(3))+","+str$(SC2D_Panoramic%(4))+" dimension "+str$(SC2D_Panoramic%(5))+","+str$(SC2D_Panoramic%(6))+" collision: "+str$(SC2D_Panoramic%(7))+" contact: "+str$(SC2D_Panoramic%(8)) end_if return
arriere: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,M1%) return avant: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,1) return cacher: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,0,1,1,0) return cachertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,0,1,1,0) return
montrertout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
fixe: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,0,0) return mobile: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,0,1,1,1,0) return
mobiletout: res% = dll_call6("ChangeSpriteAttributesInScene2D",SC2D%,M1%,1,1,1,0) return
deplacer: res% = dll_call4("ChangeSpritePositionInScene2D",SC2D%,0,200,220) return zoomplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*3)/2 h% = (SC2D_Panoramic%(6)*3)/2 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return zoommoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if w% = (SC2D_Panoramic%(5)*2)/3 h% = (SC2D_Panoramic%(6)*2)/3 res% = dll_call4("ChangeSpriteSizeInScene2D",SC2D%,0,w%,h%) return changerimg: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,0,adr(f$)) return imagelist: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if filter 97,"Fichier ILB|*.ilb" f$ = file_name$(97) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",16,16) : ' en vue de KGF.ilb - à changer selon les besoins ! res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,1,IL%) return
changerilb: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if if message_input("ImageList","Indice de l'image à utiliser: ","0")<>1 then return res% = val(message_text$) if res%<0 then return res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,2,res%) return
rotateplus: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call3("RotateSpriteInScene2D",SC2D%,0,15) return rotatemoins: if SC2D_Panoramic%(2)=0 message "Aucun sprite n'est sélectionné" return end_if res% = dll_call3("RotateSpriteInScene2D",SC2D%,0,0-15) return
Cette fonctionnalité permet d'avoir des images individuelles des sprites qui changent, en fonction de la situation du jeu, et même d'avoir des sprites animés par un timer. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 14:08 | |
| Ok, j'ai pris la dernière version. La ligne avant END pose un problème. - Code:
-
res% = dll_call3("ChangeSpriteOptionsInScene2D",SC2D%,1,0)
Si je la neutralise çà marche. MAIS, seul le crane apparait (A ce sujet, j'ai coloré le fond en noir, résultat il n'est pas transparent, bref...). En cliquant sur monter tout je ne vois pas les autres sprites apparaître. Je dois laisser cet après-midi, je repasse ce soir. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 14:27 | |
| - Citation :
- La ligne avant END pose un problème.
Je ne vois pas pourquoi? Quel problème ? Ca marche parfaitement chez moi. Elle rend la zone de contact du sprite 1 (l'étoile) "pénétrable" par le sprite 4 (le crane). Le sprite 2 (la grille) par contre ne peut pas pénétrer le sprite 4 (le crane). J'ai charge KGF.ilb avec le bouton ImageList pour le sprite 3 (le W), et je lui ai donné l'image 195 (l'icône de dossier). Ca marche très bien, et cela ajuste automatiquement les dimensions du sprite. Tu dois avoir un problème de version. Recharge et réessaie... Et vous autres, est-ce que ça marche chez vous ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 17:11 | |
| Bon, je vais retenter l'affaire. Je te tiens au courant. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 17:41 | |
| J'ai repris KGF.DLL et toutes les images (le fond et les 4 sprites). j'ai renommé le fond, j'ai enregistré les 4 sprites en bmp avec PicPick. Le programme ne bloque plus.
Le mais, c'est que je n'ai que le crane sur le Scene2D, et j'ai cliqué sur "Montre tout" ça ne change rien. Par contre les manipulations sur le crane fonctionnent bien (c'est super!). Si je le cache et que je clique sur montre tout il s'éfface et revient.
A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 18:22 | |
| Bon ! Klaus ne te prend pas la tête, j'ai trouvé.
J' y ai pourtant pensé au nom de l'image, mais je me suis focalisé sur l’extension (bmp) et pas sur le nom. Mais c'est un peu de ta faute, les noms des images sur CloudMe ne sont pas les mêmes que dans le code.
Bref tout va bien.
ça promet, ton affaire, je crois bien que je vais me la faire cette bibliothèque de fonctions.
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 19:55 | |
| Oups... toutes mes excuses ! J'ai changé les noms sur le Webdav en correspondance ! Désolé ! Pour la peine, je t'offre un bonus: un sprite animé ! Charge le fichier shokunin.ilb de mon WebDav, et fais marcher ce programme: - Code:
-
' test_sprite_anime.bas
label choix, tim
dim res%, IL%, f$, SC2D%, SC2D_PS%, nsprite%
dll_on "KGF.dll"
width 0,700 : height 0,500 button 1 : top 1,10 : left 1,10 : caption 1,"Choix ILB" : on_click 1,choix edit 98 : hide 98
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
open_dialog 2 timer 3 : timer_off 3 : timer_interval 3,200 : on_timer 3,tim
end
choix: filter 2,"Fichier bibliothèque|*.ilb" f$ = file_name$(2) if f$="_" then return timer_off 3 if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",60,106) res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,130,0,200,0) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,1,IL%) nsprite% = 0 res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,2,nsprite%) timer_on 3 return tim: timer_off 3 nsprite% = nsprite% + 1 if nsprite%>9 then nsprite% = 0 res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,2,nsprite%) timer_on 3 return Tu verras le petit bonhomme marcher ! Là, le timer est fait en Panoramic. Je suis en train de faire une version dans laquelle le sprite s'anime tout seul, avec une vitesse réglable. C'est chouette, non ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 20:17 | |
| C'est petit, mais ça marche bien.
J'attends la suite avec impatiente. Le seul truc qui m'inquiète c'est pour programmer, je n'ai pas l'habitude de cette manière. Mais avec une bonne documentation, je m'y ferait.
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 28 Avr 2016 - 22:41 | |
| KGF.dll V6.46 du 28/04/2016Nouveautés: - ChangeSpriteImageInScene2D - ajout de la gestion de l'animation automatique, avec sélection de la vitesseModules modifiés: KGF.dllLa doc est inchangée. Les sources sources sont à jour. Le nouveau code fonction 3 à ChangeSpriteImageInScene2D permet de lancer ou d'arrêter l'animation automatique. Si le dernier paramètre est 0, l'animation s'arrête. Sinon, le dernier paramètre représente le délai en millisecondes entre les différentes apparences du sprite. Elles seront chargées à partir de la ImageList installée par ChangeSpriteImageInScene2D code 1. Voici la démo d'animation simplifiée, sans le timer Panoramic, car c'est fait maintenant automatiquement dans la DLL. Par contre, il y a 2 bonshommes qui marchent, à des vitesses différentes: - Code:
-
' test_sprite_anime.bas
label choix
dim res%, IL%, f$, SC2D%, SC2D_PS%
dll_on "KGF.dll"
width 0,700 : height 0,500 button 1 : top 1,10 : left 1,10 : caption 1,"Choix ILB" : on_click 1,choix edit 98 : hide 98
SC2D% = dll_call1("CreateScene2D",handle(0)) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,0) dim SC2D_Panoramic%(SC2D_PS%) SC2D_Panoramic%(0) = SC2D_PS% SC2D_Panoramic%(1) = handle(98) SC2D_PS% = dll_call2("SetInterfaceOfScene2D",SC2D%,adr(SC2D_Panoramic%)) res% = dll_call6("ResizeScene2D",SC2D%,10,40,600,400,1)
open_dialog 2
end
choix: filter 2,"Fichier bibliothèque|*.ilb" f$ = file_name$(2) if f$="_" then return if IL%<>0 then res% = dll_call1("DeleteImageList",IL%) IL% = dll_call2("CreateImageList",60,106) res% = dll_call2("LoadImageList",IL%,adr(f$)) res% = dll_call6("CreateSpriteInScene2D",SC2D%,50,20,0,200,0) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,2,0) res% = dll_call6("CreateSpriteInScene2D",SC2D%,200,80,0,200,0) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,1,IL%) res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,2,0) message "Taper RETURN pour lancer l'animation..." res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,1,3,200) : ' animation par 200 ms res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,2,3,300) : ' animation par 300 ms return Ca ouvre des perspectives intéressantes, non ?
Dernière édition par Klaus le Ven 29 Avr 2016 - 0:58, édité 2 fois | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |