#12004/5/8 17:17:59
请高手帮忙:
我想作一个篮球在墙面和地板间回弹的动画。篮球受鼠标拖动而运动,运动中受重力作用。可是篮球在动画的最后,竟被渐渐吸入地下,这是什么原因?怎样更改?
以下是代码:
property pSpeed --记录速度大小
property pDistance --记录当前鼠标位置和角色位置的差值
property pLimit --舞台的范围
property pGravity --重力
on getPropertyDescriptionList me --获得速度取样间隔列表和舞台范围列表
list=[:]
addProp list,#pThrowSpan,[#comment:"Frame Span of throw",#format,#integer,#ange:[#min:1,#max:20],#default:5]
addProp list,#pLimit,[#Comment:"Limit Rectangle",#format:#rect,#default:rect(0,0,640,480)]
addProp list,#pGravity,[#Comment:"Gravity",#format:#integer,#range:[#min:0,#max:3],#default:0]
return list
end
on beginSprite me --设置舞台对角色的限制范围
pLimit.right=pLimit.right-(sprite(me.spriteNum).right-sprite(me.spriteNum).left)/2
pLimit.left=pLimit.left+(sprite(me.spriteNum).right-sprite(me.spriteNum).left)/2
pLimit.bottom=pLimit.bottom+(sprite(me.spriteNum).top-sprite(me.spriteNum).bottom)/2
pMode=#normal
end
on mouseDown me
pDistance=the mouseloc-sprite(me.spriteNum).loc
pMode=#pressed
pLocList=[]
end
on mouseUp me
throw(me)
end
on mouseUpOutside me
throw(me)
end
on throw me
pSpeed=(the mouseLoc-pDistance-pLocList[1])/pThrowSpan --设置鼠标弹起时物体的初速度
pMode=#throw
end
on exitFrame me
if pMode=#pressed then
pCurrentLoc=the mouseLoc-pDistance
sprite(me.spriteNum).loc=pCurrentLoc --鼠标拖动时设置当前物体位置
pLocList.add(pCurrentLoc)
if pLocList.count>pThrowSpan then
pLocList.deleteAt(1)
end if
else if pMode=#throw then --设置物体反弹时的速度
pSpeed.locV=pSpeed.locV+pGravity
pCurrentLoc=pCurrentLoc+pSpeed
sprite(me.spriteNum).loc=pCurrentLoc --投掷过程中物体的位置
pSpeed=pSpeed*0.98 --由于阻力的作用,物体速度要减慢
if pCurrentLoc.locH>pLimit.right or pCurrentLoc.locH<pLimit.left then
puppetSound 1,"ding"
pSpeed.locH=-pSpeed.locH
pSpeed.locV=pSpeed.locV+pGravity
end if
if pCurrentLoc.locV>pLimit.bottom then
puppetSound 1,"ding"
pSpeed.locV=-abs(pSpeed.locV)
end if
end if
end