主题:  对stage上的两个sprite进行匹配

xuyi_5d

职务:普通成员
等级:2
金币:1.0
发贴:179
#12000/11/30 15:53:41
第一次贴这么长的贴子,也不知大家看得清不清楚,有什么做得不好的地方请大家包涵

-- 对stage上的两个sprite进行匹配

property pDrag -- 判断拖动的sprite
property pOffset --拖动时用的鼠标位移
property pOrigLoc --sprite开始位置
property pLocked -- 锁定匹配成功的sprite

--初始化
on beginSprite me
pOrigLoc = sprite(me.spriteNum).loc
pDrag = FALSE
pLocked = FALSE
end

on mouseDown me
-- 不能拖动已锁定的sprite
if pLocked = TRUE then exit

-- 可拖动
pDrag = TRUE

-- 记录位移
pOffset = sprite(me.spriteNum).loc - the mouseLoc
end


-- 结束拖动并判断位置是否正确
on mouseUp me
pDrag = FALSE
checkLock(me)
end
on mouseUpOutside me
pDrag = FALSE
checkLock(me)
end

-- 改变sprite的位置与鼠标相同
on prepareFrame me
if pDrag then
sprite(me.spriteNum).loc = the mouseLoc + pOffset
end if
end

--检查是否匹配
on checkLock me

-- 决定匹配名
memName = sprite(me.spriteNum).member.name
memNum = memName.word[2]
matchName = memname.word[1]

-- 检查所有的sprite
repeat with i = 1 to the lastChannel

-- 是否为匹配的sprite?
if sprite(i).member.name = matchName then

-- 检查两个sprite的距离是否够近?
if sprite i intersects sprite me.spriteNum then
-- 将两个sprite的loc值设为一致,可更改为自己想要的结果
sprite(me.spriteNum).loc = sprite(i).loc

-- 锁定
pLocked = TRUE

sprite(me.spritenum).loc=sprite(i).loc
-- 退出处理
exit
end if
end if
end repeat

-- 距离不够近则返回原来的位置
sprite(me.spriteNum).loc = pOrigLoc
end
源代码参考Marcromedia Director 7 开发使用手册,由机械工业出版社2000年1月出版
我是靠这本书入的门,它最大的特色就是有大量的示例,而示例中又全是行为,这
为我的lingo编程养成的良好的习惯(至少我认为)。



我是小马

职务:普通成员
等级:3
金币:17.0
发贴:794
#22000/11/30 16:04:53
呵呵,这个行为可以很方便地作配对游戏啊

我也是湖南人,我们是老乡呢



小虎

职务:普通成员
等级:1
金币:0.0
发贴:33
#32000/11/30 19:58:13
xuyi,你好。
我原来也有一本Director 7发使用手册,但是那张配套光盘给我搞丢了。你可以把书上的所有例子寄给我吗?不胜感激。
Email:net169@wx88.net



笑鱼

职务:普通成员
等级:1
金币:0.0
发贴:65
#42000/12/1 12:43:31
xuyi \mzgjingsi
原来两位都是我的老乡,在这里遇到你们真高兴。