我正在使用URLLoader將swf文件加載到我的主應用程序中,我想獲取加載的swf文件的背景顏色。 (我聽說有一個解決方案將讀取加載的swf的字節代碼)如何獲取加載的swf文件的背景顏色?
回答
是的,您需要查看二進制swf數據。 Here是swf格式的簡要說明。 this是關於不同種類的標籤的一點細節。您的要求是找出SetBackgroundColor標記(標記類型= 9),它通常是swf的第一個或第二個標記。
swf文件中的字節遵循小端順序,所以在閱讀數據時需要小心。大多數情況下,它們將從第9個字節開始(包括第9個)被壓縮(前三個字節將是「CWS」),所有數據在處理之前需要解壓縮(ByteArray.decompress)。
SomeExample代碼:)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
public class Test1 extends Sprite{
private var stream:URLStream;
public function Test1():void {
stream = new URLStream();
stream.load(new URLRequest("some.swf"));
stream.addEventListener(Event.COMPLETE, onComplete);
}
private function onComplete(e:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.endian = Endian.LITTLE_ENDIAN;
stream.readBytes(bytes, 0, 8);
var sig:String = bytes.readUTFBytes(3);
trace("SIG = " + sig);
trace("ver = " + bytes.readByte());
trace("size = " + bytes.readUnsignedInt());
var compBytes:ByteArray = new ByteArray();
compBytes.endian = Endian.LITTLE_ENDIAN;
stream.readBytes(compBytes);
if (sig == "CWS") {
compBytes.uncompress();
}
var fbyte = compBytes.readUnsignedByte();
var rect_bitlength = fbyte >> 3;
var total_bits = rect_bitlength * 4;
var next_bytes = Math.ceil((total_bits - 3)/ 8);
for(var i=0; i<next_bytes; i++) {
compBytes.readUnsignedByte();
}
trace("frameRate = " + compBytes.readUnsignedShort());
trace("frameCount = " + compBytes.readUnsignedShort());
while(true) {
var tagcodelen:Number = compBytes.readUnsignedShort();
var tagcode:Number = tagcodelen >> 6;
var taglen:Number = tagcodelen & 0x3F;
trace("tag code = " + tagcode + "\tlen = " + taglen);
if (taglen >=63) {
taglen = compBytes.readUnsignedInt();
}
if(tagcode == 9) {
trace("found background color");
trace("color is: RED=" + compBytes.readUnsignedByte() +", GREEN = " + compBytes.readUnsignedByte() + ", BLUE = " + compBytes.readUnsignedByte());
break;
}
compBytes.readBytes(new ByteArray(), 0, taglen);
//break;
}
}
}}
無法迴應的例子!謝謝。 – Radu 2009-11-16 12:42:34
您的SWF文件必須將它傳遞給帶有JS的網頁。
getURL(「javascript:setColour(」+ DESIRED COLOR +「)」);
「setColour」函數當然必須做你想做的事情。
OP想獲取顏色,而不是設置它。即使問題是設置顏色,你會怎麼做通過javascript? SWF被加載到另一個SWF,而不是直接加載到網頁上。 – Amarghosh 2009-11-16 09:08:51
- 1. 如何獲取加載的swf的背景顏色?
- 2. 如何在JavaScript中獲取「背景顏色:背景」顏色?
- 3. 如何獲取WPF背景的顏色
- 4. 如何獲取TextView的背景顏色?
- 5. 如何獲取PDF文件的文本背景顏色(RGB值)?
- 6. 獲取文本框的背景顏色
- 7. 如何獲取CheckBox背景顏色
- 8. UITableView:獲取背景顏色
- 9. GEB獲取背景和文本顏色
- 10. Android獲取父視圖的背景顏色,如果沒有背景顏色集
- 11. 如何獲得div的背景顏色?
- 12. 獲取PDF文件中特定文本的背景顏色
- 13. 如何用背景圖像爲背景顏色重新添加背景顏色?
- 14. 獲取主題TListView的背景顏色
- 15. Android:獲取片段的背景顏色
- 16. 獲取GtkEntry的背景顏色
- 17. 如何獲取Tkinter Canvas小部件的背景顏色
- 18. Fancybox 2 - SWF背景顏色不工作
- 19. 設置背景圖片加載前的網頁背景顏色
- 20. 如何自定義android中Toast的背景,背景顏色和文本顏色
- 21. 如何擺脫SWF文件上的白色背景?
- 22. Flex 3加載背景顏色
- 23. 如何獲取按鈕的背景顏色。在點擊操作取決於背景顏色
- 24. 如何獲取當前控制檯背景和文本顏色?
- 25. 如何獲取Javafx中的瓦片窗格的背景顏色?
- 26. 如何獲得emacs背景顏色
- 27. 更改xib文件的背景顏色?
- 28. 如何在加載時設置NSWindowController的背景顏色?
- 29. 如何改變背景顏色和背景顏色?
- 30. 獲取QPushButton按下背景顏色
你通過'URLLoader'或'Loader'加載它?我不知道如何去做 - 等待答案。 – Amarghosh 2009-11-16 09:09:57