I have solved it. I do not know why it took me so long!
First animate the sprite on a 15-second cycle with pingpong, then mask the first 30 seconds using loopforward on a 60-second cycle with opacity 30000 to -30000.
i.e.
clipSprite {
source : Dancer5
pos : 624, -960.670628, -3911.025972
standingHeight : 960
scale : -1, 1, 1 opacity : 0
animate : 15, pingpong, linear, opacity, 1 // t=0 to t=15, opacity 0 to 1 (masked by quad below)
// t=15 to t=30, opacity 1 to 0 (masked by quad below)
// t=30 to t=45, opacity 0 to 1
// t=45 to t=60, opacity 1 to 0
}
quad {
hotspot : 0.5, 0.5
pos : 0, -266, 2607.350648
size : 416, 234
color : 0.75, 0.75, 0.75
opacity : 30000
animate : 60, loopforward, linear, opacity, -60000 // t=0 to 30, opacity 30000 to 0 ( masking)
// t= 30 to 60, opacity 0 to -30000 (transparent)
}