我有一個具有不同位置的「虛擬地圖」的SWF文件。當每個位置被點擊時,用戶被重定向到一個超鏈接。如何根據點擊目標使用navigateToURL將用戶發送到其他網址?
我將如何使每個位置重定向到不同的超鏈接?
- 如果被點擊的噴泉,用戶會被重定向到http://different.com
- 如果被點擊的城堡,用戶會被重定向到http://something.com
您可以從here或查看下載的SWF它在線:http://www.fastswf.com/NInMHKU
這裏是ActionScript代碼,它可以讓用戶在點擊某個位置時被重定向:
package
{
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.events.MouseEvent;
public class Map
{
public function Map()
{
}
public function gotoLocation(param1:int) : void
{
if(param1 != 999)
{
navigateToURL(new URLRequest("http://www.baidu.com"),"_blank");
}
}
private function closeMap(param1:MouseEvent = null) : void
{
}
}
}
一個叫JPEXS免費Flash反編譯程序反編譯的SWF文件後,我發現有兩個不同的,因爲地圖上的每個位置上的文件。舉個例子,下面是噴泉的文件。來源
:中Flumsfountain_499.as
package SkylandersSuperchargersMap_26_10_15_fla
{
import flash.display.MovieClip;
public dynamic class Flumsfountain_499 extends MovieClip
{
public function Flumsfountain_499()
{
super();
addFrameScript(0,this.frame1,1,this.frame2);
}
function frame1() : *
{
stop();
}
function frame2() : *
{
stop();
}
}
}
來源:flumsfountainlPU_520.as
package SkylandersSuperchargersMap_26_10_15_fla
{
import flash.display.MovieClip;
public dynamic class flumsfountainlPU_520 extends MovieClip
{
public function flumsfountainlPU_520()
{
super();
addFrameScript(18,this.frame19);
}
function frame19() : *
{
stop();
}
}
}
以前我試過...
我能夠使用RABCDAsm反編譯的SWF到許多不同的文件,這裏是代碼(源文件:Map.class.asasm
),這是由AS3項目,在這個問題上產生:
trait method QName(PackageNamespace(""), "gotoLocation")
method
name "gotoLocation"
refid "TestGotoLocationFunction/instance/gotoLocation"
param QName(PackageNamespace(""), "int")
returns QName(PackageNamespace(""), "void")
flag HAS_PARAM_NAMES
paramname "param1"
body
maxstack 4
localcount 2
initscopedepth 0
maxscopedepth 1
code
getlocal0
pushscope
getlocal1
pushshort 999
ifeq L13
getlex QName(PackageNamespace("flash.net"), "navigateToURL")
getglobalscope
findpropstrict QName(PackageNamespace("flash.net"), "URLRequest")
pushstring "http://www.baidu.com"
constructprop QName(PackageNamespace("flash.net"), "URLRequest"), 1
pushstring "_blank"
call 2
pop
L13:
returnvoid
end ; code
end ; body
end ; method
end ; trait
_Note_:**(1)**請確保您測試,它可能重新編譯** **工作新的SWF從JPEXS反編譯的代碼。 **(2)**另外,FastSWF.com鏈接提供了一個「修改」的SWF(如base64或類似的),因此當它從站點保存後,無法在反編譯器中作爲有效的SWF打開(字節數甚至從預期的「CWS」或「FWS」字節值開始)。我已將FastSWF鏈接替換爲以前問題中的可測鏈接。最後確認您可以成功重新編譯新的SWF。然後我們會知道你在哪裏需要答案,否則編輯'.ASasm'代碼是你最好的選擇。 –
@ VC.One嗨,爲什麼有鏈接到修改後的SWF的原因是,當您點擊某個位置時,您編輯到帖子中的正確鏈接不會重定向到相同的URL。你能推薦我一個網站,我可以上傳修改後的SWF文件,其中一個可以在反編譯器中作爲有效的SWF文件打開?我將研究SWF是否可以重新編譯。 –
我的意思是網站本身正在做一些與上傳瑞士法郎的防拷貝的東西(嘗試保存瑞士法郎爲測試目的只提供一個加密文件)。如果僅在線查看,則不是問題,但回答者需要通過反編譯原始swf來重新創建問題。 –