eNet学院俱乐部


 
标题: 滚动条控制avi电影播放问题
最爱水煮鱼
少尉
Rank: 12Rank: 12Rank: 12



UID 2147516
精华 0
积分 13247
帖子 9
威望 4967
积分 0
阅读权限 80
注册 2007-1-25
状态 离线
发表于 2007-6-19 17:32  资料 短消息 
滚动条控制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
后电影不能播放了。

请问我错在哪里?

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




顶部
[广告] 论坛使用帮助(如何发附件)
最爱水煮鱼
少尉
Rank: 12Rank: 12Rank: 12



UID 2147516
精华 0
积分 13247
帖子 9
威望 4967
积分 0
阅读权限 80
注册 2007-1-25
状态 离线
发表于 2007-6-19 17:33  资料 短消息 
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%看待,于是就可以通过计算,把滑块的位置与视频的时间对应上了。




顶部
[广告] 注意:下载附件需要消耗积分
梦铃的声音
少尉
Rank: 12Rank: 12Rank: 12


UID 2176483
精华 6
积分 15077
帖子 1311
威望 5021
积分 150
阅读权限 80
注册 2007-2-15
状态 离线
发表于 2007-7-6 16:00  资料 短消息 
辛苦了
顶部
[广告] 论坛使用帮助(如何发附件)
 


当前时区 GMT+8, 现在时间是 2008-11-19 13:37


Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.026599 second(s), 17 queries , Gzip enabled

清除 Cookies - 联系我们 - 硅谷动力网络学院 - Archiver - WAP