J'ai un fichier SWF d'une "carte virtuelle" avec différents emplacements. Lorsque vous cliquez sur chaque emplacement, l'utilisateur est redirigé vers un lien hypertexte.Comment envoyer l'utilisateur à une URL différente en utilisant navigateToURL en fonction de la cible cliquée?
Comment faire pour rediriger chaque emplacement vers un autre lien hypertexte?
- Si la fontaine a été cliqué, l'utilisateur sera redirigé vers http://different.com
- Si le château a été cliqué, l'utilisateur sera redirigé vers http://something.com
Vous pouvez télécharger le fichier SWF à partir here ou vue en ligne: http://www.fastswf.com/NInMHKU
Voici le code ActionScript qui permet à l'utilisateur d'être redirigé en cliquant sur un lieu:
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
{
}
}
}
Après décompilation du fichier SWF avec un programme appelé JPEXS Free Flash Decompiler, je découvre qu'il ya deux différents fichiers AS pour chaque emplacement sur la carte. À titre d'exemple, voici les fichiers de la fontaine.
Source de: 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();
}
}
}
Source de: 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();
}
}
}
Auparavant, j'ai essayé ...
j'ai pu utiliser RABCDAsm décompiler le fichier SWF en plusieurs fichiers différents et est le code ici (fichier source:Map.class.asasm
) qui est produit par le projet AS3 en haut de cette question:
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) ** Assurez-vous de tester qu'il est possible de recompiler un nouveau ** ** swf travail de ce JPEXS Code décompilé . ** (2) ** Aussi le lien FastSWF.com donne un SWF "modifié" (comme base64 ou tel?) Donc quand il est sauvé du site il ne peut pas être ouvert comme un SWF valide dans un décompilateur (les octets don ne commencent même pas avec les valeurs d'octets "CWS" ou "FWS" attendues). J'ai remplacé le lien FastSWF par un lien testable de votre question précédente. Enfin, confirmez que vous pouvez recompiler avec succès un nouveau fichier SWF. Ensuite, nous saurons où vous avez besoin de réponse, sinon éditer ce code '.ASasm' est votre meilleure option. –
@ VC.One Bonjour, la raison pour laquelle il existe un lien vers un fichier SWF modifié est que le fichier que vous avez édité dans la publication ne redirige pas vers la même URL lorsqu'un utilisateur clique sur un emplacement. Pouvez-vous me recommander un site Web que je peux télécharger le SWF modifié, un qui peut être ouvert en tant que SWF valide dans un décompilateur? Je vais voir si le fichier SWF peut être recompilé. –
Je veux dire que le site web lui-même est en train de faire une sorte de protection contre la copie avec des swf téléchargés (essayez de sauvegarder le swf à des fins de test ne donne qu'un fichier crypté). Ce n'est pas un problème si vous êtes en ligne uniquement, mais un répondeur devra recréer votre problème en décompilant le swf d'origine. –