主题:  精灵径直移动问题

268

职务:普通成员
等级:1
金币:0.0
发贴:124
#12004/8/17 17:44:33
斑竹好,我现在写了一个金灵移动的程序,有a,b,c,d,e五个精灵,a,b,c,d
从上到下的排列,当点击其中任何一个精灵的时候让精灵e移动到当前精灵同一水平线上。以下是我写的程序
property pMySprite
property pV,pH
property pSpritelocV
property pSpritelocH
property pStep
property pHor,pVer
property pmeV,pmeH
property pHua
property flage --控制是否运动
property updown --控制上下


on getPropertyDescriptionList me
set List = [:]
addProp List, #pStep, [#comment: "加速度:", #format: #integer, #default: 3, #range: [#min: 1, #max: 30]]
return list
end getPropertyDescriptionList

on mouseup me
pMySprite = me.spriteNum --获取精灵号
pmeV = sprite(pMySprite).locV --当前角色Y坐标
pSpritelocV = sprite(5).locV -- 指定滑快Y坐标

flage = 1 --使滑快可运动
put flage
-- if pmeV >= pSpritelocV then --判断向上还是向下
-- updown = 1
-- else
-- updown = 0
-- end if
--end
end


on prepare me
if flage = true then
if pmeV > sprite(5).locV then --控制向下运动
pSpritelocV = sprite(5).locv
pVer=pmeV - pSpritelocV
sprite(5).locV=sprite(5).locV+(pVer/pStep)
else if pmeV <= sprite(5).locV then --控制向上运动
pSpritelocV = sprite(5).locv
pVer=pSpritelocV - pmeV
sprite(5).locV=sprite(5).locV-(pVer/pStep)
else if pmeV = pSpritelocV then
flage = 0
put flage
end if
end if
end

on exitframe me
prepare me
end

现在使用的时候出了一个问题,点击第一次的时候可以达到想要的效果,但是第二次点击的时候就不能移动到当前精灵同一水平位置了,我就这几行程序看了几个小时,也不知道问题出在那,逻辑上我感觉肯定是对的,可是就是有问题,可以帮我看看吗?谢谢你



268

职务:普通成员
等级:1
金币:0.0
发贴:124
#22004/8/18 11:10:37
呵呵,谢谢,我搞定了
我现在的程序
property pMySprite
property pSpritelocV
property pStep
property pVer
property pmeV
property flage --控制是否运动
property upDown --控制上下
property pCiShu --从电源开始当前精灵是第几次被点
global ciShu --点击次数


on getPropertyDescriptionList me
set List = [:]
addProp List, #pStep, [#comment: "加速度:", #format: #integer, #default: 3, #range: [#min: 1, #max: 30]]
return list
end getPropertyDescriptionList

on mouseup me
put "String mouseup mouseup mouseup mouseup"
ciShu = ciShu + 1
pCiShu = ciShu
pMySprite = me.spriteNum --获取精灵号
pmeV = sprite(pMySprite).locV --当前角色Y坐标
pSpritelocV = sprite(5).locV -- 指定滑快Y坐标
flage = 1 --使滑快可运动
end


on prepareDown me
--控制向下运动
pSpritelocV = sprite(5).locv
pVer=pmeV - pSpritelocV
sprite(5).locV = sprite(5).locV+(pVer/pStep)
end

on prepareUp me
--控制向上运动
pSpritelocV = sprite(5).locv
pVer=pSpritelocV - pmeV
sprite(5).locV=sprite(5).locV-(pVer/pStep)
end


on exitframe me
if flage = true and ciShu = pCiShu then
if pmeV >= pSpritelocV then
prepareDown me
else if pmeV <= pSpritelocV then
prepareUp me
end if
end if
end


还有在电影脚本里加
global ciShu --点击次数
on startMovie me
ciShu = 0
end