滚动条控制avi电影播放问题。
AVI电影放在通道1,滑块放在通道2,滚动条放在通道3。在第10贞加了:
on exitFrame me
go the frame
sprite(3).loch=sprite(2).loch+sprite(2).width*(sprite(1).movietime*1.0/(sprite(1).duration*1.0))
end
在滑块上加了:
on mouseDown me
repeat while the mouseDown
sprite(me.spritenum).loc=the mouseloc
updatestage
end repeat
set the constraint of sprite 1 to 2
end mouseDown
这样,滚动条能随着电影播放而动,滑块也可以拖动,但是我一放开鼠标,那滑块就到了开头。
我在10贞那加了:
sprite(1).movietime=((sprite(3).loch-sprite(2).loch)/sprite(2).width)*sprite(1).duration
后电影不能播放了。
请问我错在哪里?
想实现跟一般播放器一样,对电影的自由控制:滚动条滑块能随着电影的播放而滑动,鼠标可以拖动滚动滑块,当滑快被拖动后,电影能够跳到相应的画面并且开始播放。
要怎么做? 我也想知道怎么弄的,来个达人指教下啊!!!
没有做实验,简单说一下我的看法
楼主你用来设置影片播放时间的这一句:sprite(1).movietime=((sprite(3).loch-sprite(2).loch)/sprite(2).width)*sprite(1).duration
不应该放在第10帧的帧脚本里吧,因为设置影片当前进度的功能,应该是在滑块被拖动时触发,也就是你原先所写的:
repeat while the mouseDown
sprite(me.spritenum).loc=the mouseloc
updatestage
end repeat
在这个循环里设置影片播放时间,应该才是想到达到的效果,你试试?
另外,这种使用 while true 方式实现的滑块拖动,几乎相当于死循环,在实际运行时,一个拖动滑块的操作很可能让 CPU 跑到 100% 占用率,不是很理想。
我习惯的做法是借助滑块的 onExitFrame 事件,先用一个变量记录当前滑块是被拖动的状态还是非拖动状态,onMouseDown 和 onMouseUp 以及 onMouseUpOutside 时更改这个状态,每次 onExitFrame 时根据该状态决定是让滑块移动到影片当前进度位置,还是让滑块跟随鼠标位置移动,同时影响影片的播放进度。
而且如果在 onMouseDown 和 onMouseUp 及 onMouseUpOutside 事件时,分别将影片暂停和恢复播放,最终运行效果可以更加流畅,也减少了在慢速媒体如 CD-ROM 上运行出错的可能性,请参考!
页:
[1]