#22002/4/19 14:00:27
--------------------- Flash 控制行为全套1.0
---------------------
--------------------- 本行为全套提供对flash 精灵的全程控制以及相关信息采集!
---------------------包括播放、快进、倒带、暂停,并提供滑动控制条的跳跃控制,及质量控制!
---------------------在播放过程中还提供了采集精灵信息,包括当前帧、总帧数、质量状态!
---------------------
---------------------
---------------------使用声明:你可以修改并使用本行为,并希望能和本人交流使用心得。如果你在教学或转裁
--------------------- 中需要本行为代码,请著名第一作者!不得刊登本行为谋取经济利益。
---------------------
---------------------
---------------------
---------------------
---------------------
--------------------- 第一作者:Three-m (黄 勇,上 海)
--------------------- 联系方式:Three-m@etang.com
--------------------- 2001.12.29
---------------------------------flash播放控制全套--播放进度条--------------------------------------------
property MyLocV
property LeadSprite
property SwfSprite
property MyNum
property slideType
property slideAllDistance
property InstallRect
property PmousePressed
property SlideDistence
property Cycle
property PmousePressedOut
on beginsprite me
if sprite(SwfSprite).member.type<>#flash then
alert "目标精灵的类型不是#Flash,请确认!"
halt
end if
set MyNum=me.spritenum
puppetSprite MyNum, true
set slideAllDistance=sprite(LeadSprite).width-sprite(MyNum).width
setMyLocV
setMylocH
InstallRect=sprite(MyNum).rect
PmousePressed=false
end
on ContralByMouse1
if PmousePressedOut=true then
ContralByMouse2
exit
end if
case true of
(inside(the mouseloc,sprite(MyNum).rect)):
PmousePressed=true
PmousePressedOut=true
sprite(SwfSprite).stop()
sendallsprites(#SlideContralSwf,true)
ContralByMouse2
(inside(the mouseloc,sprite(LeadSprite).rect)):
if Cycle>5 then
PmousePressed=true
sprite(SwfSprite).stop()
sendallsprites(#SlideContralSwf,true)
ContralByMouse2
end if
otherwise:
SlideDistence=integer(slideAllDistance*sprite(SwfSprite).frame*1.00/sprite(SwfSprite).member.framecount)
sprite(Mynum).rect=offset(InstallRect,SlideDistence,0)
end case
end
on setMyLocV
case slideType of
"顶部":
LocVDerf=sprite(LeadSprite).rect[2]-sprite(MyNum).rect[2]
"中间":
LocVDerf=sprite(LeadSprite).rect[2]+sprite(LeadSprite).height/2-sprite(MyNum).rect[2]
"底部":
LocVDerf=sprite(LeadSprite).rect[2]+sprite(LeadSprite).height-sprite(MyNum).rect[2]
end case
sprite(Mynum).rect=offset(sprite(Mynum).rect,0, -(LocVDerf-sprite(MyNum).height/2))
end
on setMylocH
LocVDerf=sprite(MyNum).rect[1]-sprite(LeadSprite).rect[1]
sprite(Mynum).rect=offset(sprite(Mynum).rect, LocVDerf,0)
end
on ContralByMouse2
if (the mouseHsprite(LeadSprite).rect[1]) then
sprite(MyNum).loch=the mouseH
SlideDistence=sprite(MyNum).rect[1]-sprite(LeadSprite).rect[1]
PerNow=SlideDistence*1.00/slideAllDistance
goToFrame(sprite SwfSprite, integer(sprite(SwfSprite).member.framecount*PerNow))
end if
end
on exitframe me
if the mousedown=true then
set Cycle=Cycle+1
ContralByMouse1
else
if Cycle=1 then
nothing
else
set Cycle=1
end if
if PmousePressed=true then
PmousePressed=false
PmousePressedOut=false
sprite(SwfSprite).play()
end if
SlideDistence=integer(slideAllDistance*sprite(SwfSprite).frame*1.00/sprite(SwfSprite).member.framecount)
sprite(Mynum).rect=offset(InstallRect,SlideDistence,0)
end if
end
--=======================================================================
on getPropertyDescriptionList me
set LeadSprites=[]
set SwfSprites=[]
set slideTypes=["顶部","中间","底部"]
------------------
repeat with spritenum=1 to the lastChannel
case sprite(spritenum).member.type of
(#flash):
append SwfSprites,spritenum
append LeadSprites,spritenum
(#empty):
next repeat
(#bitmap):
append LeadSprites,spritenum
(#shape):
append LeadSprites,spritenum
end case
end repeat
--------------------
vPDList = [:]
setaProp vPDList, #SwfSprite, [#comment: "显示进度的目标flash精灵:", #format: #string, #default: 1, #range:SwfSprites]
setaProp vPDList, #LeadSprite, [#comment: "选择进度条精灵:", #format: #string, #default: 1, #range:LeadSprites]
setaProp vPDList, #slideType, [#comment: "在进度条精灵的位置:", #format: #string, #default: 1, #range:slideTypes]
return vPDList
end getPropertyDescriptionList