2010-10-28 18 views
6

Gibt es einen besseren Weg, dies zu tun? Ich habe das Gefühl, dass ich etwas falsch mache, indem ich mich zu oft wiederhole.Gibt es eine bessere Möglichkeit, dies zu schreiben?

O = viz.pick(1, viz.WORLD) 

BackSetts = ["set_b1b", "set_b2a", "set_b1a", "set_b2b"] 
LeftSetts = ["set_l1a", "set_l1b", "set_l2a", "set_l1b"] 
NormSetts = ["set_nr_a", "set_nr_b"] 
Maps = ["MapA","MapB"] 

if O.name in BackSetts: 
    for i in set(BackSetts)|set(Maps): 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

elif O.name in LeftSetts: 
    for i in set(LeftSetts)|set(Maps): 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

elif O.name in NormSetts: 
    for i in NormSetts: 
     WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 
+2

Was versuchen Sie zu tun? – katrielalex

+0

Dieser Codeabschnitt teilt meiner 3D-Engine (ähnlich wie panda3d) mit, zu prüfen, welche "Maps" als Texturen auf meinen Polygonen sichtbar sind (alpha), wenn ein switch-Objekt mit der Maus angeklickt wird (viz.pick); es invertiert den Transparenzstatus der angewendeten Textur. – relima

Antwort

3

Die triviale Transformation ist:

O = viz.pick(1, viz.WORLD) 

BackSetts = ["set_b1b", "set_b2a", "set_b1a", "set_b2b"] 
LeftSetts = ["set_l1a", "set_l1b", "set_l2a", "set_l1b"] 
NormSetts = ["set_nr_a", "set_nr_b"] 
Maps = ["MapA","MapB"] 
anyset = [] 

if O.name in BackSetts: 
    anyset = set(BackSetts)|set(Maps) 

elif O.name in LeftSetts: 
    anyset = set(LeftSetts)|set(Maps) 

elif O.name in NormSetts: 
    anyset = NormSetts 

for i in anyset: 
    WORLD[i].alpha(abs(WORLD[i].getAlpha()-1)) 

Diese kümmert, so dass NormSetts nicht mit Karten union'd wird, wie in Ihrem ursprünglichen Code.

Verwandte Themen