Forums Développement Multimédia

Aller au contenu

[résolu] :  changer de texture (depuis plusieurs distributions)

Director

5 réponses à ce sujet

#1 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 04 April 2010 - 18:16 PM

et bonjour,

voilà ça fait quelques temps que j'essaye d'adapter le code trouvé ici:
lien du forum

au mien, mais sans succès :(

puis tout à l'heure je suis tombé (ouch) sur cette discussion:
lien du forum

j'en ai ressorti ces 2 petites lignes de code:
lTexture = member("picturebox").texture(File_name)
if not voidp(lTexture) then lTexture.image = member("nouvelleImage").image
 
que j'ai pu très facilement adapter à ma scène (humm, ouf!)

maintenant, l'étape suivant est de charger mes textures avec un boucle qui compte le nombre de membre dans une distribution défini,
pour cela, j'ai essayer le code suivant:


on Load_Textures
  repeat with inc = 1 to castLib(2).member.count
    if voidp(textures) then
      textures = member(1).newTexture("3D_" & inc, #fromCastMember, member("3D_" & inc))
    else
      textures.image = member("3D_" & inc).image
    end if
    member(1).model("vignette_" & inc).shader.texture = textures
  end repeat  
end
 

mais ça n'affiche comme texture que le dernier membre de ma distribution, par contre ça l'affiche bien autant de fois que j'ai de membre dans cette distrib, il semblerait donc que la solution ne soit pas bien loin...

en revanche, si j'essaye ceci:

on Load_Textures
  repeat with inc = 1 to castLib(2).member.count
    if voidp(textures) then
      textures = member(1).newTexture("3D_" & inc, #fromCastMember, member("3D_" & inc))
    else
      textures.image = castLib(2).member[inc]
    end if
    member(1).model("vignette_" & inc).shader.texture = textures
  end repeat  
end
 

ben ça me dit que la propriété #image n'est pas trouvé...

où est-ce que je me trompe SVP?

#2 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 04 April 2010 - 22:59 PM

pour info, j'ai ajouter un
put(textures) dans le if et le else, et je m'apperçois que textures ne s'incrémente jamais!?
alors que
put(inc) dans le if et le else me dit bien que inc s'incrémente

hors textures est la concaténation de "3D_" et inc

doit y avoir un truc qui m'échappe là...

Modifié par elran, 04 April 2010 - 23:00 PM.


#3 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 05 April 2010 - 10:13 AM

Salut,

moi je ferais comme ça :

on Load_Textures
  lCount = castLib(2).member.count
  lWorld = member(1)

  repeat with inc = 1 to lCount
    lTextureName = "3D_" & inc
    lTexture = lWorld.texture(lTextureName)

    if voidp(lTexture) then
      lTexture = lWorld.newTexture(lTextureName , #fromCastMember, castLib(2).member[inc])
    end if

    lTexture.image = castLib(2).member[inc]
   
    lModel = lWorld.model("vignette_" & inc)
    if voidp(lModel) then
        put "oups"
    else
        lModel.shader.texture = lTexture
    end if
  end repeat  
end
 

Modifié par Alexx, 05 April 2010 - 10:13 AM.


#4 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 05 April 2010 - 11:14 AM

yep, impec, j'ai juste du ajouter .image à la ligne:

---------------------------------------
lTexture.image = castLib(2).member[inc]
---------------------------------------

pour que ça fonctionne.

merci d'avoir pris le temps de me pondre ce code, et de me faire (indirectement) "remarquer" qu'il fallait mettre
les résultats dans des variables, encore un vilain défaut à gommer...

par contre, je ne pige toujours pas pourquoi mon compteur "inc" qui s'incrémentait bien, n'incrémentait pas
le contenu de ma variable textures...

j'imagine que partie de la réponse est dans ton code, mais y'a quand même un truc qui m'échappe ;)

en tous cas, merci à toi.



Voir le messageAlexx, le 05 April 2010 - 10:13 AM, dit :

Salut,

moi je ferais comme ça :

on Load_Textures
  lCount = castLib(2).member.count
  lWorld = member(1)

  repeat with inc = 1 to lCount
    lTextureName = "3D_" & inc
    lTexture = lWorld.texture(lTextureName)

    if voidp(lTexture) then
      lTexture = lWorld.newTexture(lTextureName , #fromCastMember, castLib(2).member[inc])
    end if

    lTexture.image = castLib(2).member[inc]
   
    lModel = lWorld.model("vignette_" & inc)
    if voidp(lModel) then
        put "oups"
    else
        lModel.shader.texture = lTexture
    end if
  end repeat  
end
 


#5 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 05 April 2010 - 11:20 AM

Voir le messageelran, le 05 April 2010 - 11:14 AM, dit :

yep, impec, j'ai juste du ajouter .image à la ligne:

---------------------------------------
lTexture.image = castLib(2).member[inc]
---------------------------------------

ah oué désolé ^^

sinon, pour ton problème d'incrémentation, je pense que ça venait du fait que ton test (if voidp(texture) ) était pas bon

#6 elran

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 05 April 2010 - 12:18 PM

ah, pour autant, la première fois, il me créait bien une texture, et la seconde fois, lorsque plus égal à void, il passait bien au changement d'image uniquement...
bon en tous cas merci à toi (bis)



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)