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 |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Mai 2016 - 13:25 | |
| Je viens de tester tout ça, ça marche à merveille. J'ai des questions: 1) La vignette peut-elle être transparente, si oui quelle couleur de fond et est-ce qu'elle est superposé (par_dessus) l'image de fond initiale ? EX: Dans l'image ci-dessous, j'ai utilisé une vignette avec un fond noir, on ne voit pas l'image du fond initiale. J'ai aussi essayé avec un remplissage blanc, c'est pareil. 2) Comme on peut le voir sur l'image ci-dessous, j'ai réduit les Sprites (3xZoom-) pour qu'il entrent dans les cases du fond mosaïque. Questions: 2.1) pourrait-on avoir la possibilité d'enregistrer le fond-mosaïque seul. 2.2) et idem pour les sprites, individuellement bien entendu Ceci permettrait de se fabriquer les images d'un jeu très facilement. 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 3 Mai 2016 - 13:48 | |
| Ton essai semble prometteur, Jeau-Claude ! Voici quelques réponses: - Citation :
- La vignette peut-elle être transparente, si oui quelle couleur de fond et est-ce qu'elle est superposé (par_dessus) l'image de fond initiale ?
Non. Il y a une seule image de fond. Et par définition, comme c'est le fond, c'est opaque. La "vignette" ne sert qu'à tapisser le fond, en remplaçant l'ancien. Mais, et il y a un "mais": tu peux utiliser des Sprites multiples, ayant chacun l'image d'une vignette, et placés de la même manière que tes cellules actuelles. Et du les rends "non cliquables" (par la fonction ChangeSpriteAttributesInScene2D, paramètre sel%=0 et mov%=0). - Citation :
- pourrait-on avoir la possibilité d'enregistrer le fond-mosaïque seul.
Actuellement, non. Mais c'est une bonne question, et techniquement facile. Je vais ajouter cela dans la prochaine version ! - Citation :
- idem pour les sprites, individuellement bien entendu
Pourquoi pas ? Même réponse que pour l'image de fond. Je suis en train de faire une documentation digne de ce nom, intégrée à KGF.chm. On gros boulot. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Mai 2016 - 14:22 | |
| Super boulot Klaus. Je pousserais mes tests plus loin avant de faire de nouvelles demandes d'évolution. Il y a déjà largement de quoi jouer... Hum, si peut être une demande à titre indicatif. Que pense tu de pouvoir définir un mouvement par défaut pour un sprite jusqu'au prochain événement. Par exemple pour une balle, on donnerait son déplacement pour chaque cycle de rafraichissement de l'image et elle avancerait à cette vitesse sur l'écran tant qu'un événement ne se produirait pas. Penses-tu que ce soit une bonne idée et penses tu que ce soit faisable sans faire une usine à gaz ?
J'ai pris l'exemple d'une balle, mais ça serait applicable aussi à un fond qui défilerait derrière les sprites par exemple (sprite statique vers le centre de l'écran et ce serait le fond qui bouge en fonction de la vitesse à laquelle il est sensé avancer...)
Ce n'est pas une demande de mise en place mais une demande de faisabilité et une estimation de l'intérêt... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Mai 2016 - 16:30 | |
| Merci pour tes réponses Klaus.
Bien dommage que les vignettes ne puissent être transparentes, ça aurait été super pour construire une image de fond.
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 3 Mai 2016 - 19:20 | |
| @Jicehel: - Citation :
- Que pense tu de pouvoir définir un mouvement par défaut pour un sprite jusqu'au prochain événement.
Une opération automatique, lancée à la demande, et s'arrêtant... comment, en fait ? Lors d'une collusion ? A la demande du programme, également ? Et à quelle vitesse ? Quelle direction ? Il y a une série de paramètres à bien définir, avant de se lancer dans un tel truc. Mais c'est faisable. L'animation d'un sprite en est d'ailleurs un exemple, bien que réduit... Donc, je retiens l'idée de base et on essayera de définir quelque chose qui tienne la route, d'accord ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Mai 2016 - 19:27 | |
| KGF.dll V6.55 du 03/05/2016Nouveautés: - nouvelle fonction: SaveImagesOfScene2DModules modifiés: KGF.dll Scened2D.docLa doc et les sources sources sont à jour. Cette fonction permet de sauvegarder dans un fichier BMP, soit l'image de fond (intégrale, pas seulement le ViewPort !), soit l'image actuelle d'un sprite donné. Voici le programme démo avec deux nouveaux boutons pour tester cela: - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout label event, fixe, mobile, mobiletout, zoomplus, zoommoins label changerimg, imagelist, changerilb label deplacer, info1, info2, panit, mosaic, enrfond, enrsp2
dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ")
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") 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,1000 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
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 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info1 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info2 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp2
memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400 font_name 96,"Courier" : font_size 96,8 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_call2("CreateScene2D",handle(0),1) 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)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
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 info1: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return info2: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%( 9)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(10)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(11)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(12)),4) + " = sprite visible" return
panit: if SC2D_Panoramic%(9)=0 then return if SC2D_Panoramic%(10)=0 res% = dll_call4("ScrollScene2D",SC2D%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D%,0,0,0) caption 17,"Libérer fond" end_if return mosaic: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D%,1200,800,adr(f$)) return enrfond: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return enrsp2: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 3 Mai 2016 - 19:54 | |
| Merci Klaus,
ça fonctionne...
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 3 Mai 2016 - 20:47 | |
| J'ai mis en ligne sur mon site web et mon site miroir, le début de la doc du Scene2D. Il y a un chapitre général assez long, et la fonction CreateScene2D. Le reste suivra, petit à petit.
Attention: apparemment, mon WebDav est hors ligne, pour le moment. Mes mes deux sites sont opérationnels.
EDIT
Mon WebDav semble à nouveau en ligne. Tout est conforme.
EDIT
La doc du Scene2D grandit... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 13:42 | |
| La doc de l'objet Scene2D est complète dans KGF.chm.
Ceci concerne les fonctions agissant sur l'objet Scene2D directement. La doc des objets Sprite suivra. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 14:06 | |
| Je ne dois pas être doué, je n'ai pas trouvé les infos sur le scene2d dans KGF.chm. Je ne sais pas si je ne prends pas le bon fichier, mais je n'ai pas trouvé dedans ... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 14:14 | |
| Tu télécharges KGF.chm, soit à partir de mon site, soit à partir de mon site miroir. Dans les deux cas, ça se trouve dans l'onglet "Panoramic", sous le lien "KGF.chm"... Ou alors, tu télécharges à partir de mon WebDav, dossier DLLs\Documentation CHM
Je viens de le télécharger, et le fichier est à jour. Tu trouves les pages concernées dans la rubrique "Objets", objet "Scene2D". | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 15:31 | |
| J'ai mis l'aide en ligne à jour, également. Près de 700 fichiers... Lien sur mes sites ou dans ma signature. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 17:26 | |
| Ok, je ne regardais pas où il fallait (je n'avais pas ouvert la partie Objets), donc forcément c'est plus dur à trouver ... Merci pour ton guidage (j'avais recherché scene2d mais il ne me l'avait pas trouvé non plus ...) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 18:24 | |
| Merci Klaus, pour la doc en chm, maintenant je commence à comprendre comment ça marche.
Dès que j'irai un peu mieux, je vais refaire un jeu que j'ai déjà fait, pour apprécier ton système.
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 4 Mai 2016 - 23:19 | |
| C'est fait - la doc de l'objet Scene2D est complète, y compris toutes les fonctions qui gèrent les Sprites.
C'est complet partout: sur mon site, mon site miroir, mon WebDav et la doc en ligne. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 0:06 | |
| Bonsoir klaus ! désolé de ne pas t'avoir répondu plus tôt sur DESIGNER... J'ai testé le principe de l'alignement, c'est très alléchant ! J'envisage réellement de l'intégrer dans GPP, c'est vraiment très pratique comme tu le soulignais dans ton exemple. Pour l'instant j'avance dans la doc, mais je vais tenté d'intégrer la fonction avant la sortie 'officielle'. J'ai commencé a étudier l'intégration qui devrait être assez simple. j'ai même déjà une bonne idée sur la manière de faire. Encore merci Klaus. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 0:11 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 12:01 | |
| KGF.dll V6.56 du 05/05/2016
Nouveautés: - ChangeSpritePositionInScene2D: gérer les collisions en déplacement programmé - ChangeSpritePositionInScene2D: code retour -3 en cas de collision bloquante
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sources sont à jour. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 13:28 | |
| Scene2D: Annonce de ce qui va venir:J'ai trouvé un moyen de définir et d'implémenter une action répétitive et automatique pour un sprite. Je suis donc en train de réaliser la fonction suivante: - Code:
-
res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,sprite%, act%, p1%, p2%, ms%) avec act% = code action à effectuer p1% et p2% sont des paramètres pour l'action ms% est l'intervalle en millisecondes entre chaque répétition Pour le moment, je fais deux actions: 1 = déplacement jusqu'à collision ou "sortie du monde" 2 = déplacement jusqu'à collision bloquante ou "sortie du monde" Bien entendu, le code action 0 stoppe l'action en cours pour le sprite. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 18:42 | |
| Cela devient de plus en plus intéressant. J'ai commencer un programme en PK2D (je l'appelle ainsi pour signifié qu'on programme avec Panoramic et KGF.dll) J'ai 2 questions concernant la couleur de transparence d'un sprite: 1) Comment on la définie, je n'ai rien trouvé dans la doc.chm ? J'ai commencé par utiliser un sprite avec le noir comme couleur de transparence en pensant que c'était la couleur par défaut. En fait, pour que mon sprite soit transparent j'ai du changer le noir par du blanc. 2) La couleur de transparence est-elle définie pour la totalité des sprites ou est-ce qu'un sprite peut avoir sa propre couleur transparence ? (je suppose que non) 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 5 Mai 2016 - 19:39 | |
| Dans mon esprit, la couleur de transparence devait être le noir. J'ai dû me tromper quelque part si tu constates que c'est le blanc et non le noir. Il y a une inversion binaire quelque part. Je vais regarder cela.
Et effectivement, la couleur de transparence est la même pour tous les sprites. C'est une constante globale. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 20:12 | |
| Je te confirme que c'est bien la blanc qui est actuellement la couleur de transparence.
Serait-il possible qu'elle soit paramétrable, avec le noir par défaut.
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 5 Mai 2016 - 20:15 | |
| Je vais plonger dans les entrailles pour trouver cela, et je verrai comment je pourrai optimiser et paramétrer cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 20:22 | |
| KGF.dll V6.57 du 05/05/2016Nouveautés: - nouvelle fonction AutomaticSpriteActionInScene2D Modules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Cette fonction permet de déclarer une action automatique pour un sprite, ou de la désactiver. Bien entendu, plusieurs sprites peuvent avoir une action automatique en même temps, et c'est une action personnelle pour chaque sprite, totalement indépendante des autres actions ou autres sprites. Et un sprite peut être en même temps animé, "tiré" par la souris etc. Et en même temps, on peut déplacer le fond pour voir les sprites agir... Pour le moment, il y a 3 actions possibles: 0 - désactiver une action pour un sprite 1 = déplacement jusqu'à collision ou "sortie du monde" 2 = déplacement jusqu'à collision bloquante ou "sortie du monde" Voici le programme de démo avec un bouton supplémentaire pour déplacer un sprite vers le bas à droite... Placez un des sprites sur le passage du sprite mouvant - suivant ses caractéristiques, le sprite mouvant, tout en détectant la collision, s'arrêtera devant ou passera au-travers. Il s'arrêtera toujours au bord, non pas du viewport, mais de l'image de fond - donc, déplacez le fond avec la souris si vous voulez suivre sa course ! - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout label event, fixe, mobile, mobiletout, zoomplus, zoommoins label changerimg, imagelist, changerilb label deplacer, info1, info2, panit, mosaic, enrfond, enrsp2, actdepl
dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ")
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") 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,1000 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
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 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info1 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info2 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp2 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl
memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400 font_name 96,"Courier" : font_size 96,8 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_call2("CreateScene2D",handle(0),1) 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)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
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 info1: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return info2: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit: if SC2D_Panoramic%(9)=0 then return if SC2D_Panoramic%(10)=0 res% = dll_call4("ScrollScene2D",SC2D%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D%,0,0,0) caption 17,"Libérer fond" end_if return mosaic: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D%,1200,800,adr(f$)) return enrfond: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return enrsp2: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return actdepl: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,2,5,5,200) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 5 Mai 2016 - 22:59 | |
| KGF.dll V6.58 du 05/05/2016Nouveautés: - nouvelle fonction SetTransparentColorOfScene2DModules modifiés: KGF.dll KGF.chmLa doc et les sources sources sont à jour. Et voici le moyen d'avoir une couleur de transparence comme actuellement (blanc par défaut) ou noir comme habituellement en Panoramic, ou n'importe quelle couleur, en fait ! Seulement, attention: ce changement de couleur de transparence va s'appliquer à partir de l'appel de cette fonction, à tous les chargements d'image des sprites. Cela s'applique bien sur aux sprites créés après ce moment. Mais cela s'applique également aux nouvelles images des sprites animées, ainsi que pour les images transformées des sprites redimensionnés. Donc, conseil: appliquer cette fonction une seule fois, immédiatement après la création du Scene2D et avant la création du premier sprite ! Dans le programme de démi ci-après, on pose la question de la couleur de transparence (avec un choix "blanc" ou "noir") immédiatement après le démarrage, et tout se met en place après. Par défaut; le programme utilise la couleur blanche si l'écran de saisie est validé sans avoir fait le choix. - Code:
-
' test_Scene2D_Klaus.bas
label arriere, avant, cacher, cachertout, montrertout label event, fixe, mobile, mobiletout, zoomplus, zoommoins label changerimg, imagelist, changerilb label deplacer, info1, info2, panit, mosaic, enrfond, enrsp2, actdepl
dim res%, SC2D%, SC2D_PS%, IL%, w%, h%, f$, sInfo%, i%, trans% dim sversion$, iversion% : sversion$ = string$(255," ") dim kversion$ : kversion$ = string$(25," ")
dim M1% : M1% = 0 - 1 dim bl$ : bl$ = string$(5," ") 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,1000 : height 0,700
dll_on "KGF.dll" iversion% = dll_call1("GetVersionOfScene2D",adr(sversion$)) res% = dll_call1("KGFdllVersion",adr(kversion$)) caption 0,trim$(sversion$)+" dans "+kversion$
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 button 15 : top 15,220 : left 15,640 : caption 15,"Info Scene2D" : on_click 15,info1 button 16 : top 16,250 : left 16,640 : caption 16,"Info Sprite" : on_click 16,info2 button 17 : top 17,280 : left 17,640 : caption 17,"Bloquer fond" : on_click 17,panit button 18 : top 18,310 : left 18,640 : caption 18,"Fond mosaïque" : on_click 18,mosaic button 19 : top 19,340 : left 19,640 : caption 19,"Enr. fond" : on_click 19,enrfond button 20 : top 20,370 : left 20,640 : caption 20,"Enr. sprite 2" : on_click 20,enrsp2 button 21 : top 21,400 : left 21,640 : caption 21,"Dépl. (+5,+5)" : on_click 21,actdepl
memo 96 : top 96,10 : left 96,730 : width 96,220 : height 96,400 font_name 96,"Courier" : font_size 96,8 open_dialog 97 edit 98 : hide 98 : on_change 98,event alpha 99 : top 99,450 : left 99,10 : caption 99,"en attente"
dim titre$, mes$ titre$ = "Choix de la couleur de transparence" mes$ = "Couleur de transparence (défaut: blanc):" dim lib$ : lib$ = "OK;*;*;Blanc;Noir" dim img$ : img$ = "" res% = dll_call6("ShowMessageModalEX",adr(titre$),adr(mes$),adr(img$), 1, 0-2, adr(lib$)) trans% = int(res%/8) if trans%=0 then trans% = 1
SC2D% = dll_call2("CreateScene2D",handle(0),1) if trans%=1 : ' blanc ? res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,255,255,255) else : ' noir ! res% = dll_call4("SetTransparentColorOfScene2D",SC2D%,0,0,0) end_if 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)
' activer les 2 lignes suivantes pour tester la suppression d'un sprite ! ' message "Taper RETURN pour continuer..." ' res% = dll_call2("DeleteSpriteInScene2D",SC2D%,3)
' activer les 2 lignes suivantes pour tester la suppression du Scene2D ! ' message "Taper RETURN pour continuer..." ' res% = dll_call1("DeleteScene2D",SC2D%)
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%) ' animer le sprite res% = dll_call4("ChangeSpriteImageInScene2D",SC2D%,0,3,190) return info1: clear 96 sInfo% = dll_call2("InformAboutScene2D",SC2D%,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call2("InformAboutScene2D",SC2D%,adr(info%)) item_add 96,"Scene2D:" item_add 96,right$(bl$+str$(info%(0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%(1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%(2)),4) + " = ID du sprite actif" item_add 96,right$(bl$+str$(info%(3)),4) + " = left du Scene2D" item_add 96,right$(bl$+str$(info%(4)),4) + " = top du Scene2D" item_add 96,right$(bl$+str$(info%(5)),4) + " = width du Scene2D" item_add 96,right$(bl$+str$(info%(6)),4) + " = height du Scene2D" item_add 96,right$(bl$+str$(info%(7)),4) + " = viewport utilisé" item_add 96,right$(bl$+str$(info%(8)),4) + " = déplacement fond" item_add 96,right$(bl$+str$(info%(9)),4) + " = left du viewport" item_add 96,right$(bl$+str$(info%(10)),4) + " = top du viewport" return info2: clear 96 sInfo% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,0) if variable("info%")=1 then free info% dim info%(sInfo%) info%(0) = sInfo% res% = dll_call3("InformAboutSpriteInScene2D",SC2D%,0,adr(info%)) item_add 96,"Sprite:" item_add 96,right$(bl$+str$(info%( 0)),4) + " = nombre d'éléments" item_add 96,right$(bl$+str$(info%( 1)),4) + " = nombre de sprites" item_add 96,right$(bl$+str$(info%( 2)),4) + " = indice du sprite" item_add 96,right$(bl$+str$(info%( 3)),4) + " = left du sprite" item_add 96,right$(bl$+str$(info%( 4)),4) + " = top du sprite" item_add 96,right$(bl$+str$(info%( 5)),4) + " = width du sprite" item_add 96,right$(bl$+str$(info%( 6)),4) + " = height du sprite" item_add 96,right$(bl$+str$(info%( 7)),4) + " = résistance" item_add 96,right$(bl$+str$(info%( 8)),4) + " = contact bloquant" item_add 96,right$(bl$+str$(info%( 9)),4) + " = zones de contact" item_add 96,right$(bl$+str$(info%(10)),4) + " = ImageList" item_add 96,right$(bl$+str$(info%(11)),4) + " = indice ImageList" item_add 96,right$(bl$+str$(info%(12)),4) + " = animation activée" item_add 96,right$(bl$+str$(info%(13)),4) + " = intervalle en ms" item_add 96,right$(bl$+str$(info%(14)),4) + " = sprite visible" return
panit: if SC2D_Panoramic%(9)=0 then return if SC2D_Panoramic%(10)=0 res% = dll_call4("ScrollScene2D",SC2D%,1,0,0) caption 17,"Bloquer fond" else res% = dll_call4("ScrollScene2D",SC2D%,0,0,0) caption 17,"Libérer fond" end_if return mosaic: filter 97,"Fichiers BMP|*.bmp" f$ = file_name$(97) if f$="_" then return res% = dll_call4("LoadMosaicBackgroundToScene2D",SC2D%,1200,800,adr(f$)) return enrfond: f$ = "SC2D_fond_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,0,adr(f$)) message "Fond sauvegardé dans: "+f$ return enrsp2: f$ = "SC2D_sprite_2_sauvegarde.bmp" res% = dll_call3("SaveImagesOfScene2D",SC2D%,2,adr(f$)) message "Sprite 2 sauvegardé dans: "+f$ return actdepl: ' déplacement avec arrêt sur contact bloquant ' res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,1,5,5,200) ' déplacement avec arrêt sur n'importe quel contact res% = dll_call6("AutomaticSpriteActionInScene2D",SC2D%,0,2,5,5,200) return | |
| | | 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
| |
| |
| |