主题:  按钮行为:可定制掠过效果、音效和action

我是小马

职务:普通成员
等级:3
金币:17.0
发贴:794
#12000/11/30 11:58:25
--代码提供:mzgjingsi
--功能: 鼠标按下,掠过,正常状态的变化
--    鼠标掠过,按下的音效
--    鼠标掠过状态的光标变化
-- 按钮点击后调用制定的lingo命令
--
property pMemberDown,pMemberDown_State
property pMemberRollover_State
property pMemberLeave,pMemberEnter
property pRolloverCursor,pRolloverCursor_State
property pEnterSound,pRolloverSound_State
property pDownSound,pDownSound_State
property pAction_State,pTargetFrame
property pTargetMovie,pTargetMarker
property pCustomLingo
property pAction_Flag
on getbehaviordescription me
desc = ""
put "本行为主要功能:"&RETURN after desc
put "1.变换鼠标掠过,按下时的member"&RETURN after desc
put "2.变换鼠标掠过,按下时的cursor"&RETURN after desc
put "3.设定鼠标掠过,按下时的音效"&RETURN after desc
put "4.定制鼠标点击后的lingo命令"after desc
return desc
end getbehaviordescription

on getBehaviorTooltip me
desc = ""
put "本行为主要功能:"&RETURN after desc
put "1.变换鼠标掠过,按下时的member"&RETURN after desc
put "2.变换鼠标掠过,按下时的cursor"&RETURN after desc
put "3.设定鼠标掠过,按下时的音效"&RETURN after desc
put "4.定制鼠标点击后的lingo命令"&RETURN after desc
return desc
end getBehaviorTooltip


on getPropertyDescriptionlist me
pmember=sprite(the currentSpriteNum).member

list=[:]

addProp list, #pMemberDown_State,\
[#comment: "有无按下状态?", #format: #boolean, #default: FALSE]

addprop list,#pMemberDown,\
[#comment:"按下状态member.",#format:#member,#default:pmember]

addProp list, #pMemberRollover_State,\
[#comment: "有无掠过状态?", #format: #boolean, #default: FALSE]

addprop list,#pMemberEnter,\
[#comment:"进入时member.",#format:#member,#default:pmember]

addprop list,#pMemberleave,\
[#comment:"离开后member.",#format:#member,#default:pmember]

addProp list, #pRolloverCursor_State,\
[#comment: "掠过时光标有无变化?", #format: #boolean, #default: FALSE]

addprop list,#pRolloverCursor,\
[#comment:"掠过时光标", #format:#cursor, #default:""]

addProp list, #pRolloverSound_State,\
[#comment: "掠过时有无音效?", #format: #boolean, #default: FALSE]

addprop list,#pEntersound,\
[#comment:"掠过时音效.",#format:#sound,#default:"button1"]

addProp list, #pDownSound_State,\
[#comment: "有无按下音效?", #format: #boolean, #default: FALSE]

addprop list,#pDownsound,\
[#comment:"按下时音效.",#format:#sound,#default:"button2"]

addProp list, #pAction_State,\
[#comment: "定制动作", #format: #string,\
#range:["None","go to frame","go to movie","play frame","play movie","play done","go to marker",\
"go to which frame of which movie","play which frame of which movie","Custom Lingo"],\
#default:"None"]

addProp list,#pTargetFrame,\
[#comment:"Target Frame:",#format:#frame,#default:""]

addProp list,#pTargetMarker,\
[#comment:"Target Marker:",#format:#Marker,#default:""]

addProp list,#pTargetMovie,\
[#comment:"Target Movie:",#format:#string,#default:""]

addProp list,#pCustomLingo,\
[#comment:"Custom Lingo",#format:#string,#default:""]

return list
end getPropertyDescriptionlist

on mousedown me
pAction_flag = member(the clickon).number

if pMemberDown_State then
sprite(me.spritenum).member = pMemberDown
end if

if pDownSound_State then
puppetsound 3,pDownSound
end if
end mousedown

on mouseenter me
if pMemberRollover_State then
sprite(me.spritenum).member = pMemberEnter
end if

if pRolloverCursor_State then
cursor(pRolloverCursor)
end if

if pRolloverSound_State then
puppetsound 3,pEnterSound
end if
end mouseenter

on mouseleave me
if pMemberRollover_State then
sprite(me.spritenum).member = pMemberLeave
end if

cursor(0)

end mouseleave

on mouseupoutside me

sprite(me.spritenum).member = pMemberLeave

cursor(0)

end mouseupoutside

on mouseup me
sprite(me.spritenum).member = pMemberLeave
cursor(0)
if member(the clickon).number = pAction_flag then
action(me)
end if
end mouseup

on action me
if pAction_State = "go to frame" then
if value(pTargetFrame) > 0 then
go to frame value(pTargetFrame)
else
go to frame pTargetFrame
end if

else if pAction_State = "go to movie" then
go to movie pTargetMovie

else if pAction_State = "play frame" then
if value(pTargetFrame) > 0 then
play frame value(pTargetFrame)
else
play frame pTargetFrame
end if

else if pAction_State = "play movie" then
play movie pTargetMovie

else if pAction_State = "play done" then
play done

else if pAction_State = "go to marker" then
go to frame pTargetMarker

else if pAction_State = "go to which frame of which movie" then

if value(pTargetFrame) > 0 then
go to frame value(pTargetFrame) of movie pTargetMovie
else
go to frame pTargetFrame of movie pTargetMovie
end if

else if pAction_State = "play which frame of which movie" then

if value(pTargetFrame) > 0 then
play frame value(pTargetFrame) of movie pTargetMovie
else
play frame pTargetFrame of movie pTargetMovie
end if

else if pAction_State = "Custom Lingo" then
do pCustomLingo
end if
end action


编辑历史:[这消息被flyingbird编辑过(编辑时间2000-11-30 12:27:37)]


Call Me Simon

职务:普通成员
等级:2
金币:2.0
发贴:646
#22000/11/30 12:24:35
Good work, Thank you post your behavior.


the only suggestion I 'd like to say is that the PropertyDescriptionList is little bit complicated, you actually don't need that many Properties.



我是小马

职务:普通成员
等级:3
金币:17.0
发贴:794
#32000/12/5 19:48:12
呵呵,主要是因为这是在一个项目中定制的按钮行为,所以properties设置比较多,而且也没有写出详细的说明文档和行为的用法,还待进一步完善


flyingbird在上个贴子中说
引用:
Good work, Thank you post your behavior.


the only suggestion I 'd like to say is that the PropertyDescriptionList is little bit complicated, you actually don't need that many Properties.



duupu

职务:普通成员
等级:1
金币:0.0
发贴:1
#42001/7/20 11:36:39
各位高手:
一个按钮行为就要写这么长的代码。那我么这些初学者,坏不晕死。有没有什么简单的好办法?谢谢!!!



我是小马

职务:普通成员
等级:3
金币:17.0
发贴:794
#52001/7/21 3:29:18
duupu在上个贴子中说
引用:
各位高手:
一个按钮行为就要写这么长的代码。那我么这些初学者,坏不晕死。有没有什么简单的好办法?谢谢!!!


其实在director中就自带了许多行为,行为的编写可能有一些复杂,但是好的行为能极大的提高工作效率,初学者可以利用director或者他人编制的行为很快的做出效果不错的产品


建议:
大家一起来建设5D的Director行为库



jerrowolf

职务:普通成员
等级:1
金币:0.0
发贴:83
#62001/7/21 11:03:09
mzgjingsi,可以转载么?(^_^,自己动手喽)