主题:  新手提问:请问Timer能控制精灵的行为吗

sarading

职务:普通成员
等级:1
金币:0.0
发贴:5
#12004/6/10 8:24:08
各位好,本人刚刚学习director,前日写了一段lingo:
property pSprite

on beginSprite me
pSprite = sprite(6)
end

on mouseUp me
steps = 40
delta = (104 - pSprite.locH)/steps
repeat with i = 1 to steps
pSprite.locH = pSprite.LocH + Delta--实现精灵平移
updatestage
end repeat
startTimer--想在这部分实现精灵自动回撤,可是实际没有反应
if the timer = 12 then
pSprite.locH = pSprite.locH- Delta * steps
updatestage
end if

end

on endSprite me
pSprite.locH = pSprite.locH-104
end

请问各位,我这个想法错了吗,有什么办法实现呀,谢谢!



Super ChiCk

职务:版主
等级:5
金币:15.0
发贴:3502
#22004/6/10 14:24:51
你这段代码最大的问题就是on mouseup只能执行一次,这个时候开始timer,你在后面写的判断条件timer=12达不到,应该写在on exitframe 里面starttimer后timer才能=12



Super ChiCk

职务:版主
等级:5
金币:15.0
发贴:3502
#32004/6/10 14:55:13
还有就是这样写即使写对了,你的精灵也是一瞬间移动过去,然后再移动回来,因为你用的循环不正确,如果想要实现逐步移动需要将移动的程序写在exitframe里面,



Super ChiCk

职务:版主
等级:5
金币:15.0
发贴:3502
#42004/6/10 14:57:24
delta = (104 - pSprite.locH)/steps
还有就是数据类型问题,这个程式,得出的是一个整数,如果104-pSprite.locH<steps的话,delta就是0
delta = (104 - pSprite.locH)/float(steps)
这样就不会出问题了



Super ChiCk

职务:版主
等级:5
金币:15.0
发贴:3502
#52004/6/10 14:58:09
delta = (104 - pSprite.locH)/steps
还有就是数据类型问题,这个程式,得出的是一个整数,如果104-pSprite.locH<steps的话,delta就是0
delta = (104 - pSprite.locH)/float(steps)
这样就不会出问题了



sarading

职务:普通成员
等级:1
金币:0.0
发贴:5
#62004/6/10 23:14:26
谢谢你,我好好改一下,试试效果