主题:  如何用LINGO来实现移动过程!

不懂就问盗版

职务:普通成员
等级:1
金币:0.0
发贴:72
#12002/1/29 21:49:06
在同一FRAME中,用LINGO来实现移动过程的最好脚本是什么?(一定要能控制过程的时间长短)!!!
请高手指点!!



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#22002/1/30 14:09:42
我做过类似效果,不太难,要测试得很仔细,我想你应该把要求描述得更详细些。



不懂就问盗版

职务:普通成员
等级:1
金币:0.0
发贴:72
#32002/1/30 23:39:35
如有SPRITE(1)从(10,20)移动到(300,400),在移动过程中还要使SPRITE变大,在SCORE中直接设定关键帧,并可用改变速度或SPRITE的长度来改变这种变化的快慢。这样的效果用LINGO来做,怎样写脚本才好??!!



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#42002/1/31 8:20:18
下面是一个sprite behavior,sprite的初值在score中设定。放大效果可依自已要求自行加入。
property pTimeTotal,pOtime
property pDestX,pDestY
property pOloc
property pThissprite
property pMove
on getpropertydescriptionlist me
plist=[:]
addProp plist, #PDestX, [#default: 0, #format:#integer, #comment: "目标点的横坐标:"]
addProp plist, #PDestY, [#default:0, format: #integer, #comment: "目标点的纵坐标:"]
addProp plist,#pTimeTotal,[#default:60,format:#integer,#comment: "总的移动时间:"]
return plist
end

on beginsprite me
pThissprite=sprite(me.spriteNum)
pOtime=the ticks
pOloc=pThissprite.loc
pmove=true
end

on exitframe me
if pmove then
timepast=the ticks- pOtime
if timepast dloc=(point(pDestX,pDestY)-pOloc)*timepast/pTimetotal
pThissprite.loc=pOloc+dloc
else
pmove=false
pThissprite.loc=point(pDestX,pDestY)
end if
end if

end



晓珍

职务:普通成员
等级:1
金币:0.0
发贴:117
#52002/2/2 16:55:28
用关键帧很容易实现的。
上面的朋友,你的这段脚本是赋予图片上吗?你说的“。。。放大效果可依自已要求自行加入”是什么意思??



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#62002/2/3 8:33:03
不错,用tweening很容易实现;但在score中会占用大量帧,对一个稍大的作品,会无谓地增加管理难度。
同时动画的平滑程度有限,在不同的机器上可能动画的运行时间也会有出入(考虑过在低配置机器上运行吗)。

上面的script中,在exitframe 中加入对sprite的width与height的控制就可以了,动画时间与score中的tempo设定无关。