[转][心得] 一个例子获取swf文件头帧频

转载地址:
http://bbs.9ria.com/viewthread.php?tid=64203&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400


主要适用于传媒方面,用AS3写的Swf去加载AS2版本的Swf,通过获取帧频,调整自己做加载容器的帧频,来达到动画的流畅
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.IEventDispatcher;
import flash.net.URLStream;
import flash.utils.ByteArray;


public class Test extends Sprite
{
private var loader:URLStream;
public function Test()
{
this.addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
}
private function onAddToStage(e:Event):void
{
loader = new URLStream();
configureListeners(loader);

var request:URLRequest = new URLRequest("TestAs.swf");
try {
loader.load(request);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
}
private function completeHandler(e:Event):void
{
var tmpLoader:URLStream = URLStream(e.currentTarget);

var bytes:ByteArray = new ByteArray();
tmpLoader.readBytes(bytes)
var zlibFlag:String = "F";
zlibFlag = bytes.readUTFBytes(1);

/*trace(bytes.readUTFBytes(1))
trace(bytes.readUTFBytes(1))
trace(bytes.readUnsignedByte())//==版本号
*/
if (zlibFlag=="F")
{
//========没有压缩的swf
bytes.position = 17;
trace(bytes.readUnsignedShort())//读出帧频
}else
{
//========压缩过的swf,从Flash6就开始有这功能
var tmpBytes:ByteArray = new ByteArray();
tmpBytes.writeBytes(bytes, 8 );//==把位置8开始读到新的ByteArray

tmpBytes.uncompress();//===解压缩

tmpBytes.position = 9;//===转到读帧频的位置
trace(tmpBytes.readUnsignedShort())//读出帧频
}

}
}

}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值