我正在制作会员卡,每单击一次svg图像的一部分,就会用disableStyle()标记。
我似乎找不到一种可以使PShapes循环并使用getChild()禁用其样式的方法。
我只能使它以这种方式工作。我知道可以通过一些解决方案缩短时间。但是如何?
import processing.svg.*;
import java.util.ArrayList;
PImage bg;
PImage bg2;
PShape bolsvg;
//PShape bol1,bol2,bol3,bol4,bol5, bol6,bol7,bol8,bol9, bol10,bol11,bol12,bol13;
PShape[] bollen = new PShape[80];
int kwartje = 0;
//ArrayList shapes = new ArrayList();
void setup() {
size(600, 600);
bg = loadImage("bg1.png");
bg2 = loadImage("bg2.png");
bolsvg = loadShape("Bolletjes.svg");
PShape bol1 = bolsvg.getChild("1");
PShape bol2 = bolsvg.getChild("2");
PShape bol3 = bolsvg.getChild("3");
PShape bol4 = bolsvg.getChild("4");
PShape bol5 = bolsvg.getChild("5");
PShape bol6 = bolsvg.getChild("6");
PShape bol7 = bolsvg.getChild("7");
PShape bol8 = bolsvg.getChild("8");
PShape bol9 = bolsvg.getChild("9");
PShape bol10 = bolsvg.getChild("10");
PShape bol11 = bolsvg.getChild("11");
PShape bol12 = bolsvg.getChild("12");
PShape bol13 = bolsvg.getChild("13");
PShape bol14 = bolsvg.getChild("14");
PShape bol15 = bolsvg.getChild("15");
PShape bol16 = bolsvg.getChild("16");
PShape bol17 = bolsvg.getChild("17");
PShape bol18 = bolsvg.getChild("18");
PShape bol19 = bolsvg.getChild("19");
PShape bol20 = bolsvg.getChild("20");
PShape bol21 = bolsvg.getChild("21");
PShape bol22 = bolsvg.getChild("22");
PShape bol23 = bolsvg.getChild("23");
PShape bol24 = bolsvg.getChild("24");
PShape bol25 = bolsvg.getChild("25");
PShape bol26 = bolsvg.getChild("26");
PShape bol27 = bolsvg.getChild("27");
PShape bol28 = bolsvg.getChild("28");
PShape bol29 = bolsvg.getChild("29");
PShape bol30 = bolsvg.getChild("30");
PShape bol31 = bolsvg.getChild("31");
PShape bol32 = bolsvg.getChild("32");
PShape bol33 = bolsvg.getChild("33");
PShape bol34 = bolsvg.getChild("34");
PShape bol35 = bolsvg.getChild("35");
PShape bol36 = bolsvg.getChild("36");
PShape bol37 = bolsvg.getChild("37");
PShape bol38 = bolsvg.getChild("38");
PShape bol39 = bolsvg.getChild("39");
PShape bol40 = bolsvg.getChild("40");
PShape bol41 = bolsvg.getChild("41");
PShape bol42 = bolsvg.getChild("42");
PShape bol43 = bolsvg.getChild("43");
PShape bol44 = bolsvg.getChild("44");
PShape bol45 = bolsvg.getChild("45");
PShape bol46 = bolsvg.getChild("46");
PShape bol47 = bolsvg.getChild("47");
PShape bol48 = bolsvg.getChild("48");
PShape bol49 = bolsvg.getChild("49");
PShape bol50 = bolsvg.getChild("50");
PShape bol51 = bolsvg.getChild("51");
PShape bol52 = bolsvg.getChild("52");
PShape bol53 = bolsvg.getChild("53");
PShape bol54 = bolsvg.getChild("54");
PShape bol55 = bolsvg.getChild("55");
PShape bol56 = bolsvg.getChild("56");
PShape bol57 = bolsvg.getChild("57");
PShape bol58 = bolsvg.getChild("58");
PShape bol59 = bolsvg.getChild("59");
PShape bol60 = bolsvg.getChild("60");
PShape bol61 = bolsvg.getChild("61");
PShape bol62 = bolsvg.getChild("62");
PShape bol63 = bolsvg.getChild("63");
PShape bol64 = bolsvg.getChild("64");
PShape bol65 = bolsvg.getChild("65");
PShape bol66 = bolsvg.getChild("66");
PShape bol67 = bolsvg.getChild("67");
PShape bol68 = bolsvg.getChild("68");
PShape bol69 = bolsvg.getChild("69");
PShape bol70 = bolsvg.getChild("70");
PShape bol71 = bolsvg.getChild("71");
PShape bol72 = bolsvg.getChild("72");
PShape bol73 = bolsvg.getChild("73");
PShape bol74 = bolsvg.getChild("74");
PShape bol75 = bolsvg.getChild("75");
PShape bol76 = bolsvg.getChild("76");
PShape bol77 = bolsvg.getChild("77");
PShape bol78 = bolsvg.getChild("78");
PShape bol79 = bolsvg.getChild("79");
PShape bol80 = bolsvg.getChild("80");
//for(int i =0; i<20;i++){
// bol1 = bolsvg.getChild(i);
//}
bollen[0] = bol1;
bollen[1] = bol2;
bollen[2] = bol3;
bollen[3] = bol4;
bollen[4] = bol5;
bollen[5] = bol6;
bollen[6] = bol7;
bollen[7] = bol8;
bollen[8] = bol9;
bollen[9] = bol10;
bollen[10] = bol11;
bollen[11] = bol12;
bollen[12] = bol13;
bollen[13] = bol14;
bollen[14] = bol15;
bollen[15] = bol16;
bollen[16] = bol17;
bollen[17] = bol18;
bollen[18] = bol19;
bollen[19] = bol20;
bollen[20] = bol21;
bollen[21] = bol22;
bollen[22] = bol23;
bollen[23] = bol24;
bollen[24] = bol25;
bollen[25] = bol26;
bollen[26] = bol27;
bollen[27] = bol28;
bollen[28] = bol29;
bollen[29] = bol30;
bollen[30] = bol31;
bollen[31] = bol32;
bollen[32] = bol33;
bollen[33] = bol34;
bollen[34] = bol35;
bollen[35] = bol36;
bollen[36] = bol37;
bollen[37] = bol38;
bollen[38] = bol39;
bollen[39] = bol40;
bollen[40] = bol41;
bollen[41] = bol42;
bollen[42] = bol43;
bollen[43] = bol44;
bollen[44] = bol45;
bollen[45] = bol46;
bollen[46] = bol47;
bollen[47] = bol48;
bollen[48] = bol49;
bollen[49] = bol50;
bollen[50] = bol51;
bollen[51] = bol52;
bollen[52] = bol53;
bollen[53] = bol54;
bollen[54] = bol55;
bollen[55] = bol56;
bollen[56] = bol57;
bollen[57] = bol58;
bollen[58] = bol59;
bollen[59] = bol60;
bollen[60] = bol61;
bollen[61] = bol62;
bollen[62] = bol63;
bollen[63] = bol64;
bollen[64] = bol65;
bollen[65] = bol66;
bollen[66] = bol67;
bollen[67] = bol68;
bollen[68] = bol69;
bollen[69] = bol70;
bollen[70] = bol71;
bollen[71] = bol72;
bollen[72] = bol73;
bollen[73] = bol74;
bollen[74] = bol75;
bollen[75] = bol76;
bollen[76] = bol77;
bollen[77] = bol78;
bollen[78] = bol79;
bollen[79] = bol80;
// for(int i = 1; i< 80; i++){
// shapes.add(bollen[i]);
// }
//}
}
void draw() {
background(255);
image(bg, 0, 0);
shape(bolsvg, 0, -122);
image(bg2, 30, 82);
//for (int i = 0; i < 10; i++) {
// bollen[i] = kwart.getChild(i);
//}
}
void mousePressed() {
if (mouseButton == LEFT) {
for (int i = 0; i < 20; i++) {
}
kwartje++;
if (kwartje > 79) {
kwartje = 79;
}
bollen[kwartje].disableStyle();
print(kwartje);
} else if (mouseButton == RIGHT) {
if (kwartje < 0) {
kwartje = 0;
}
bollen[kwartje].enableStyle();
kwartje--;
print(kwartje);
} else {
fill(251, 210, 114);
}
}
答案 0 :(得分:1)
除了约翰尼·莫普(Johny Mopp)的答案之外,还值得考虑bolsvg的孩子是否只是从“ 1”到“ 80”的层次。
如果是这样,则在加载SVG之后,您可以简单地使用PShape
的{{3}}:
bollen = bolsvg.getChildren();
实际上,由于仅显示您需要此数组以及索引,因此可以只使用getChildren()
:
PImage bg;
PImage bg2;
PShape bolsvg;
int kwartje = 0;
void setup() {
size(600, 600);
bg = loadImage("bg1.png");
bg2 = loadImage("bg2.png");
bolsvg = loadShape("Bolletjes.svg");
}
void draw() {
background(255);
image(bg, 0, 0);
shape(bolsvg, 0, -122);
image(bg2, 30, 82);
}
void mousePressed() {
if (mouseButton == LEFT) {
kwartje++;
if (kwartje > 79) {
kwartje = 79;
}
bolsvg.getChild(kwartje).disableStyle();
print(kwartje);
} else if (mouseButton == RIGHT) {
kwartje--;
if (kwartje < 0) {
kwartje = 0;
}
bolsvg.getChild(kwartje).enableStyle();
print(kwartje);
} else {
fill(251, 210, 114);
}
}
或者,如果存在多层并且命名很关键:
PImage bg;
PImage bg2;
PShape bolsvg;
int kwartje = 0;
void setup() {
size(600, 600);
bg = loadImage("bg1.png");
bg2 = loadImage("bg2.png");
bolsvg = loadShape("Bolletjes.svg");
}
void draw() {
background(255);
image(bg, 0, 0);
shape(bolsvg, 0, -122);
image(bg2, 30, 82);
}
void mousePressed() {
if (mouseButton == LEFT) {
kwartje++;
if (kwartje > 79) {
kwartje = 79;
}
bolsvg.getChild(""+(kwartje+1)).disableStyle();
print(kwartje);
} else if (mouseButton == RIGHT) {
kwartje--;
if (kwartje < 0) {
kwartje = 0;
}
bolsvg.getChild(""+(kwartje+1)).enableStyle();
print(kwartje);
} else {
fill(251, 210, 114);
}
}
kwartje
索引+ 1达到1到80的范围,并将int
与String(“”)连接是将int
转换为字符串的另一种方式。 (Integer.toString(kwartje + 1)
会产生相同的效果)
请注意,上面的代码未经测试,因此可能因错误而崩溃, 但希望它能说明这个想法。