我们有这两个代码。第一个有效,第二个无效。我们已经注释了所有行,并且我们已经验证,在第二行中,代码可以正常工作,直到我们引入该行:
d = yield viztask.waitDraw()
在第二个中,它甚至没有 print "collision"
,这是第一行,即使在viztask.waitDraw()
下面声明了。
工作版本:
ball.enable(viz.COLLIDE_NOTIFY)
def onCollide(e):
print('collision')
global count
count = count+1
print(count)
viz.callback( viz.COLLIDE_BEGIN_EVENT, onCollide )
def testReactionTime(threadName):
print 'boolTime: '
print(boolTime)
while boolTime:
#Wait for next frame to be drawn to screen
d = yield viztask.waitDraw()
#Save display time
displayTime = d.time
#Wait for keyboard reaction
d = yield viztask.waitMouseUp(viz.MOUSEBUTTON_LEFT)
#Calculate reaction time
reactionTime = d.time - displayTime
print(reactionTime)
非工作版本:
ball.enable(viz.COLLIDE_NOTIFY)
def onCollide(e):
print('collision')
global count
if e.obj2 == beginning:
#Wait for next frame to be drawn to screen
d = yield viztask.waitDraw()
#Save display time
displayTime = d.time
#viztask.schedule( testReactionTime("h"))
print('start time')
elif e.obj2 == end:
global reactionTime
d = yield viztask.waitDraw()
reactionTime = d.time - displayTime
print("count = ")
print(count)
print("time = ")
print(reactionTime)
else:
count = count+1
print(count)
viz.callback( viz.COLLIDE_BEGIN_EVENT, onCollide )