ActionScript 3 解析/读取SWF标题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionScript 3 解析/读取SWF标题相关的知识,希望对你有一定的参考价值。

var xURLLoader : URLLoader = new URLLoader();
var xByte : uint;
var xNBits : int;
var xOffset : int;

pbGet.addEventListener(MouseEvent.CLICK, fOnClick);
xURLLoader.addEventListener(Event.COMPLETE, fOnComplete);
xURLLoader.dataFormat = URLLoaderDataFormat.BINARY;

function fParse(v : ByteArray) : Object
{
	var vFormat : String;
	var vSwfVersion : int;
	var vFileLength : int;
	var vFrameRate : int;
	var vTotalFrames : int;
	var vFrameSize : Rectangle;

	v.endian = Endian.LITTLE_ENDIAN;

	vFormat = v.readUTFBytes(3);
	vSwfVersion = v.readByte();
	vFileLength = v.readUnsignedInt();
	v.readBytes(v);
	v.length -= 8;
	if (vFormat == "CWS")
		v.uncompress();
	v.position = 0;
	vFrameSize = new Rectangle();
	vFrameSize.left = xfReadNBits(v, true) / 20;
	vFrameSize.right = xfReadNBits(v) / 20;
	vFrameSize.top = xfReadNBits(v) / 20;
	vFrameSize.bottom = xfReadNBits(v) / 20;
	vFrameRate = v.readUnsignedByte() / 256 + v.readUnsignedByte();
	vTotalFrames = v.readUnsignedShort();
	return {
		mFormat: vFormat,
		mSwfVersion: vSwfVersion,
		mFileLength: vFileLength,
		mFrameSize: vFrameSize,
		mFrameRate: vFrameRate,
		mTotalFrames: vTotalFrames
	};
}

function xfReadNBits(v : ByteArray, vStart : Boolean = false) : uint
{
	var n : uint;

	if (vStart)
	{
		xByte = v.readUnsignedByte();
		xNBits = xByte >> 3;
		xOffset = 3;
	}

	n = xByte << (32 - xOffset) >> (32 - xNBits);
	xOffset -= xNBits;
	while (xOffset < 0)
	{
		xByte = v.readUnsignedByte();
		n |= (xOffset < -8) ? (xByte << (-xOffset - 8)) : (xByte >> (-xOffset - 8));
		xOffset += 8;
	}
	return n;
}

function fOnClick(e : MouseEvent) : void
{
	xURLLoader.load(new URLRequest("http://" + tfUrl.text));
}

function fOnComplete(e : Event) : void
{
	var i : int;
	var vData : Object;
	
	vData = fParse(xURLLoader.data);
	tfFormat.text = vData.mFormat;
	tfVersion.text = vData.mSwfVersion;
	tfFileLength.text = vData.mFileLength;
	tfWidth.text = vData.mFrameSize.width;
	tfHeight.text = vData.mFrameSize.height;
	tfFrameRate.text = vData.mFrameRate;
	tfTotalFrames.text = vData.mTotalFrames;
}

以上是关于ActionScript 3 解析/读取SWF标题的主要内容,如果未能解决你的问题,请参考以下文章

将 ActionScript 2 SWF 转换为 ActionScript 3 SWF 文件(可以剥离代码)

关于 swf 中的 actionscript 标签的按位数学

Actionscript 3 从另一个/根 SWF 调用函数

Actionscript 3 - 在我的 swf 中加载另一个 swf 时出现列表错误

将 SWF 加载到 ActionScript 3 项目中 (Flex Builder)

Actionscript 3,只能读取文件的一部分而不将整个文件加载到内存中