是的,如果它真的很重要,並且您想花時間,可以通過更改swf和目錄中的swc來修改軟件包。
下面是使用SWFWire Decompiler樣本AIR項目:
public class SWFWireCompiler extends Sprite
{
public function SWCEditor()
{
stage.nativeWindow.activate();
var bytes:ByteArray = getBytes('library.swf');
var swfReader:SWFReader = new SWF10Reader();
var readResult:SWFReadResult = swfReader.read(new SWFByteArray(bytes));
readResult.swf.header.signature = SWFHeader.UNCOMPRESSED_SIGNATURE;
for each(var tag:SWFTag in readResult.swf.tags)
{
var abcTag:DoABCTag = tag as DoABCTag;
if(abcTag)
{
for each(var string:StringToken in abcTag.abcFile.cpool.strings)
{
if(string.utf8 == 'de.polygonal.ds')
{
string.utf8 = 'de.polygonal.ds.old';
}
}
}
}
var swfWriter:SWFWriter = new SWF10Writer();
var writeResult:SWFWriteResult = swfWriter.write(readResult.swf);
writeBytes('C:\\output.swf', writeResult.bytes);
}
private function getBytes(file:String):ByteArray
{
var bytes:ByteArray = new ByteArray();
var stream:FileStream = new FileStream();
stream.open(File.applicationDirectory.resolvePath(file), FileMode.READ);
stream.readBytes(bytes);
stream.close();
return bytes;
}
private function writeBytes(filename:String, bytes:ByteArray):void
{
var file:File = new File(filename);
var fs:FileStream = new FileStream();
fs.open(file, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();
}
}
那麼你將不得不做一個查找/替換的catalog.xml,然後重新包裝。
我會看到smartfox和polygonal的人想出了什麼。目前,我已經通過將舊版本加載到頂端來實現工作。 – 2011-03-06 04:57:24
我應該把你的標記作爲接受的答案嗎?我的意思是它本身並不是一個解決方案,但我不希望任何人迴應。 – 2011-03-10 11:32:20
@Aaron我加了一些代碼,如果你這樣做,所以現在它應該是你的問題的實際答案。 – 2011-03-11 07:56:16