主题:  滚动条控制avi电影播放问题。

yugangyan

职务:普通成员
等级:1
金币:0.0
发贴:122
注册:2002/1/12 10:56:08
#12007/1/18 23:07:33
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
后电影不能播放了。

请问我错在哪里?

想实现跟一般播放器一样,对电影的自由控制:滚动条滑块能随着电影的播放而滑动,鼠标可以拖动滚动滑块,当滑快被拖动后,电影能够跳到相应的画面并且开始播放。
要怎么做?

相关文件(rar):点这儿打开



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
注册:2006/1/24 15:46:21
#22007/1/27 12:24:02
1、基本原理:我个人体会关于视频的控制(主要指AVI,QuickTime)重点是要了解这样几个属性:sprite的movieTime和movieRate,member的duration和pausedAtStart。这个在帮助里都有很详细的介绍,我就不多讲了,自己查帮助。

2、实现:

a、控制速度:这个问题可以用sprite(x).movieRate = Y来解决。Y>1是快速播放;Y=1是正常播放;Y>0但Y<1是慢速播放;Y=0是暂停;Y<0是倒放(个人体会比较消耗系统资源,有时不能正常运行)

b、控制时间:基本可以用sprite(x).movieTime = Y来解决,单位是毫秒(1/1000秒)。Y=0是开头;Y=sprite(x).member.duration是到尾(如果这样设置回到了开头可以让Y = sprite(x).member.duration - 1,就不会有问题了)。

c、显示进度条并用进度条控制视频的播放:实现这个功能会用到sprite的一些基本属性,比如loc、rect、locH、locV、left、right、top、bottom,还会用到一些鼠标事件和属性,比如mouseLoc、mouseH、mouseV、mouseDown、mouseStillDown等,以上事件、属性不一定全用到,根据你的项目需求而定。

思路是给定滑块一个移动范围(开始位置和结束位置),不论长短按100%对待,而滑块的位置减去下限与移动范围(上限减去下限)的比值是可以计算出来的;我们把视频的duration也当作100%看待,于是就可以通过计算,把滑块的位置与视频的时间对应上了。


闭起眼睛看人生

cxxdir

职务:普通成员
等级:1
金币:0.0
发贴:5
注册:2007/2/28 23:28:46
#32007/3/1 22:02:09
顶!!!



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
注册:2006/1/24 15:46:21
#42007/3/25 17:32:14
可以到www.feiran.cn,有我写的一个演示实例


闭起眼睛看人生

phy

职务:普通成员
等级:1
金币:1.0
发贴:210
注册:2007/4/11 17:23:39
#52007/4/26 17:37:42
zys59在上个帖子中说
引用:
1、基本原理:我个人体会关于视频的控制(主要指AVI,QuickTime)重点是要了解这样几个属性:sprite的movieTime和movieRate,member的duration和pausedAtStart。这个在帮助里都有很详细的介绍,我就不多讲了,自己查帮助。

2、实现:

a、控制速度:这个问题可以用sprite(x).movieRate = Y来解决。Y>1是快速播放;Y=1是正常播放;Y>0但Y<1是慢速播放;Y=0是暂停;Y<0是倒放(个人体会比较消耗系统资源,有时不能正常运行)

b、控制时间:基本可以用sprite(x).movieTime = Y来解决,单位是毫秒(1/1000秒)。Y=0是开头;Y=sprite(x).member.duration是到尾(如果这样设置回到了开头可以让Y = sprite(x).member.duration - 1,就不会有问题了)。

c、显示进度条并用进度条控制视频的播放:实现这个功能会用到sprite的一些基本属性,比如loc、rect、locH、locV、left、right、top、bottom,还会用到一些鼠标事件和属性,比如mouseLoc、mouseH、mouseV、mouseDown、mouseStillDown等,以上事件、属性不一定全用到,根据你的项目需求而定。

思路是给定滑块一个移动范围(开始位置和结束位置),不论长短按100%对待,而滑块的位置减去下限与移动范围(上限减去下限)的比值是可以计算出来的;我们把视频的duration也当作100%看待,于是就可以通过计算,把滑块的位置与视频的时间对应上了。
很好,很详细.



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
注册:2006/1/24 15:46:21
#62007/7/12 9:39:53
写这么详细,给个金币花如何?喜欢


闭起眼睛看人生