AS SWF 파일의 폭과 높이를 가져옵니다!(다음 클래스 구현)
| |
AS SWF !( )2011-02-17 11:24package xzy.loadInfo{
import flash.utils.*;
import flash.errors.IOError;
public class swfHanderInfo {
protected var w_h_ruleList:Array;
protected var _type:String;//
protected var _version:uint;//
protected var _size:uint;//
protected var _width:uint;//
protected var _height:uint;//
protected var _fps:uint;//
protected var _frames:uint;//
public function swfHanderInfo(BA:ByteArray) {
setWHruleList();
parseByteArray(BA);
}
protected function parseByteArray(BA:ByteArray):void {
var binary:ByteArray=new ByteArray;
binary.endian=Endian.LITTLE_ENDIAN;
BA.readBytes(binary,0,8);// 8 , swf, ,
_type=binary.readUTFBytes(3);// 3 SWF ,FWS ,CWS SWF
_version=binary[3];// 4
_size=binary[7]<<24|binary[6]<<16|binary[5]<<8|binary[4];// 8765 16
//trace(_size,":size");
//trace(_version,":version");
binary.position=8;// 9 , swf , 9
var mainData:ByteArray=new ByteArray;
BA.readBytes(mainData);
if (_type == "CWS") {// swf FWS, swf CWS
mainData.uncompress();// 9
} else if (_type != "FWS") {
//trace("..."+_type+"...")
throw new IOError(" : swf !");
}// cws, fws, swf , !
binary.writeBytes(mainData,0,13);// 13 , swf /
// 8
var ctrlCode:String=binary[8].toString(16);
//trace(ctrlCode,":ctrlCode");
var w_h_plist:Array=getW_H_RulePosition(w_h_ruleList,ctrlCode);
var len=w_h_plist[2];
//trace(" "+len+" ");
var s:String="";//
for (var i=0; i < len; i++) {
var _temp=binary[i + 9].toString(16);
if (_temp.length ==1) {
_temp="0" + _temp;
}
s+= _temp;
}
//trace(s);
_width=new Number("0x" + s.substr(w_h_plist[0][0],4)) / w_h_plist[0][1];
_height=new Number("0x" + s.substr(w_h_plist[1][0],4)) / w_h_plist[1][1];//
trace(width,":width");
trace(height,":height");
var pos=8+len;
_fps=binary[pos+=2];// fps
//trace(_fps,":fps");
_frames=binary[pos+2]<<8|binary[pos+1];// , , 65535?
//trace(_frames,":frames");
}
protected function setWHruleList():void {//
w_h_ruleList=[];
w_h_ruleList[0]={ctrlCode:"50",position:[[0,10],[5,10],5]};
w_h_ruleList[1]={ctrlCode:"58",position:[[1,40],[6,10],6]};
w_h_ruleList[2]={ctrlCode:"60",position:[[1,10],[7,10],6]};
w_h_ruleList[3]={ctrlCode:"68",position:[[2,40],[8,10],7]};
w_h_ruleList[4]={ctrlCode:"70",position:[[2,10],[9,10],7]};
w_h_ruleList[5]={ctrlCode:"78",position:[[3,40],[10,10],8]};
w_h_ruleList[6]={ctrlCode:"80",position:[[3,10],[11,10],8]};
w_h_ruleList[7]={ctrlCode:"88",position:[[2,40],[12,10],9]};
}
protected function getW_H_RulePosition(list:Array,str:String):Array {
for (var i in list) {
if (list[i].ctrlCode == str) {
break;
}
}
return list[i].position;
}
/**
* Public methods
*/
public function toString():String {
return "[type:" + _type + ",version:" + _version + ",size:" + _size + ",width:" + _width + ",height:" + _height + ",fps:" + _fps + ",frames:" + _frames + "]";
}
/**
* Public get methods
*/
public function get type():String {
return _type;
}
public function get version():uint {
return _version;
}
public function get size():uint {
return _size;
}
public function get width():uint {
return _width;
}
public function get height():uint {
return _height;
}
public function get fps():uint {
return _fps;
}
public function get frames():uint {
return _frames;
}
}
}
:
//
// swf “www.a.com/a.swf”
package
{
import com.ycccc.swfLoader.swfHanderInfo;
//import xzy.loadInfo.swfHanderInfo
import flash.events.Event;
import flash.utils.ByteArray;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.display.Shape;
import flash.net.URLLoaderDataFormat
public class Main extends MovieClip
{
private var swfInfo:swfHanderInfo;
private var urlloader:URLLoader=new URLLoader();
private var loader:Loader=new Loader();
public function Main()
{
// constructor code
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loader_complete);
urlloader.dataFormat = URLLoaderDataFormat.BINARY;
urlloader.addEventListener(Event.COMPLETE,swf_loaded);
urlloader.load(new URLRequest("http://zqbbs.netsh.com/usr/12/12_191_15.swf"));
}
private function swf_loaded(e:Event):void
{
swfInfo = new swfHanderInfo(ByteArray(urlloader.data));
trace(" :"+swfInfo.width," :"+swfInfo.height);
loader.loadBytes(urlloader.data);
}
private function loader_complete(e:Event):void
{
var mc:MovieClip=new MovieClip();
var rect:Shape=new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0,0,swfInfo.width,swfInfo.height);
rect.graphics.endFill();
mc.addChild(rect);
mc.mask = rect;
mc.addChild(loader);
addChild(mc);
// , mc
}
}
}
http://hi.baidu.com/sacrtap/blog/item/69abda80f61afac49023d968.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.