为什么Processing.py会跳过我的数组的倒数第二项?

时间:2017-03-01 02:13:21

标签: python processing

我在Processing中制作了一种抽象艺术风格的东西。左键单击放置一个点,再次单击,然后它会产生一个随机行,右键单击以创建一个新点。

当我使用向上和向下箭头选择笔颜色时出现问题。当我使用这些键时,跳过倒数第二个项目(黑色或粉红色)。代码附后。

def setup():
    size(750, 750)
    background(255)
    global clicks
    global selector
    global fillcolors
    fillcolors = [0x80FFFFFF, 0x80000000, 0x80FF0000, 0x8000FF00, 0x800000FF, 0x80FFFF00, 0x80FF00FF, 0x8000FFFF]
    selector = 1
    clicks = 0
    ellipseMode(CENTER)
    fill(255, 255, 255, 128)

def draw():
    ellipse(50, 50, 50, 50)

def mousePressed():
    global x
    global y
    global clicks
    if (mouseButton == LEFT) and (clicks == 0):
        x = mouseX
        y = mouseY
        clicks = 1
    if (mouseButton == LEFT) and (0 < clicks < 11):
        line(x, y, x+random(-300, 300), y+random(-300, 300))
        clicks += 1
    if (mouseButton == LEFT) and (clicks == 11):
        wide = random(300)
        clicks = 1
        line(x, y, x+random(-300, 300), y+random(-300, 300))
        ellipse(x, y, wide, wide)
    if mouseButton == RIGHT:
        clicks = 0

def keyPressed():              # this is the color selector area.
    global selector
    global fillcolors
    global clicks
    clicks = 0
    if key != CODED:
        background(255)
    elif key == CODED:
        if keyCode == UP:
            if selector < 8:                  # something in here is causing the second-to-last item of the array to be skipped.
                fill(fillcolors[selector])
                selector += 1
            if selector == 7:
                fill(fillcolors[selector])
                selector = 0
        if keyCode == DOWN:
            if selector > 0:
                fill(fillcolors[selector])
                selector -= 1
            if selector == 0:
                fill(fillcolors[selector])
                selector = 7

1 个答案:

答案 0 :(得分:3)

在每种情况下,您的第一个 if(leftEnd == false || (startM <= ballMeter.getX()) ) { position.x = ballMeter.getX(); position.x += 20 * delta; if(endM <= ballMeter.getX()){ leftEnd =true; } } if(leftEnd) { position.x = ballMeter.getX(); position.x -= 20 * delta; if(startM >= ballMeter.getX()){ leftEnd = false; } } ballMeter.setPosition(position.x , ballMeter.getY() ); 会影响您的第二个。对于if,如果UP为6,则变为7,然后匹配selector;对于selector == 7,如果selector为1,则它变为0,然后匹配DOWN

使用selector == 0将其排除在外:

elif
if selector < 8:
    fill(fillcolors[selector])
    selector += 1
elif selector == 7:
    fill(fillcolors[selector])
    selector = 0

,您的第一个条件应该是if selector > 0: fill(fillcolors[selector]) selector -= 1 elif selector == 0: fill(fillcolors[selector]) selector = 7而不是if selector < 7