从SWF计算Flash动画的持续时间?
我有一大堆.SWF文件。我需要以编程方式获取每个动画的持续时间,最好是在.NET中 ByteScout告诉我,它们都是单帧动画,要知道它们运行了多长时间,唯一的办法就是看它们播放 有更好的解决方案吗?“单帧”表示动画发生在某个子对象中,该子对象已放在主时间轴的舞台上。您必须深入挖掘才能找到子代(或其他子代)的从SWF计算Flash动画的持续时间?,flash,Flash,我有一大堆.SWF文件。我需要以编程方式获取每个动画的持续时间,最好是在.NET中 ByteScout告诉我,它们都是单帧动画,要知道它们运行了多长时间,唯一的办法就是看它们播放 有更好的解决方案吗?“单帧”表示动画发生在某个子对象中,该子对象已放在主时间轴的舞台上。您必须深入挖掘才能找到子代(或其他子代)的totalFrames。如果类是公共的,您可以通过设置一个Flash文件来加载和显示舞台上所有对象的帧长度来实现。NET==??。我自己使用这个类。不幸的是,它不支持压缩文件(以CWS-开头
totalFrames
。如果类是公共的,您可以通过设置一个Flash文件来加载和显示舞台上所有对象的帧长度来实现。NET==??。我自己使用这个类。不幸的是,它不支持压缩文件(以CWS-开头)
我把课程改了一点。它也可以与压缩的swf一起工作。此类需要ICSharpCode.SharpZipLib.dll。您可以从或下载
我只更改了一个构造函数
public FlashHeaderReader(String filename)
{
Height = 0;
Width = 0;
FrameCount = 0;
FrameRate = 0;
_currentIndex = 0;
Error = false;
FileStream fs = File.OpenRead(filename);
_data = new byte[fs.Length];
fs.Read(_data, 0, _data.Length);
fs.Close();
if (System.Text.Encoding.ASCII.GetString(_data, 0, 3).Equals("CWS"))
{
_mIsCompressed = true;
}
if (_mIsCompressed)
{
var list = new List<byte>(_data);
var header = list.GetRange(1, 7).ToArray();
list.RemoveRange(0, 8);
_data = list.ToArray();
using (var str = new MemoryStream(_data))
using (var dStr = new InflaterInputStream(str))
{
var buffer = new byte[4096];
list = new List<byte> {(byte) 'F'};
list.AddRange(header);
int count;
while ((count = dStr.Read(buffer, 0, 4096)) > 0)
{
list.AddRange(buffer.Take(count));
}
_data = list.ToArray();
}
}
ParseHeader();
}
公共FlashHeaderReader(字符串文件名)
{
高度=0;
宽度=0;
帧数=0;
帧率=0;
_currentIndex=0;
错误=错误;
FileStream fs=File.OpenRead(文件名);
_数据=新字节[fs.Length];
fs.Read(_data,0,_data.Length);
fs.Close();
if(System.Text.Encoding.ASCII.GetString(_data,0,3).Equals(“CWS”))
{
_错误压缩=正确;
}
如果(_未压缩)
{
var列表=新列表(_数据);
var header=list.GetRange(1,7).ToArray();
表1.1(0,8);
_data=list.ToArray();
使用(var str=新内存流(_数据))
使用(var dStr=新的充气输入流(str))
{
var buffer=新字节[4096];
列表=新列表{(字节)'F'};
列表.添加范围(标题);
整数计数;
而((count=dStr.Read(buffer,04096))>0)
{
list.AddRange(buffer.Take(count));
}
_data=list.ToArray();
}
}
ParseHeader();
}
希望它能对您有所帮助。我可以用什么(从代码)加载Flash文件来获取舞台上的对象?有针对.NET的Flash编辑库吗?(或其他什么?)对不起,我没有在Flash中使用.NET。如果我在做这项工作,我会使用Actionscript或Flex构建另一个SWF程序来加载和清理SWF。如果您需要更多帮助,请通过我的垃圾邮件与我联系:testdee@yahoo.com