Donc, fondamentalement, j'ai cette carte. Sur cette carte j'ai des points, et quand vous cliquez sur ces points, il va à une URL.Utilisation de boucles, tableaux et IEventDispatcher avec URLRequest
La configuration de code est le suivant:
tableaux pour définir la movieclip emplacements et un autre pour les URL (celui-ci est un tableau associatif). Je crée ensuite une boucle de fonction pour que soit un écouteur d'événement pour chaque point. Lorsque le point est cliqué, il exécute une autre fonction qui gère les URL .
La fonction URL est de saisir le point cible qui a été un clic, utilisez le type de tableau d'url pour trouver la clé, puis le jeter dans la URLRequest.
Jusqu'à présent, j'ai ce code:
var places:Array = new Array();
places = [
map.paulsens, map.paraburdoo, map.plutonic, map.wiluna, map.gwalia, map.wallaby,
map.sunrise, map.moora, map.marvel, map.flyingFox, map.ernest, map.rosebery,
map.lyell, map.renison, kalMap.kanowna, kalMap.frogsLeg, kalMap.tindals,
kalMap.miitel, kalMap.higginsville
];
var links:Array = new Array();
links[ "paulsens" ] = "http://mywebsite.com/";
links[ "paraburdoo" ] = "http://mywebsite.com/";
links[ "plutonic" ] = "http://mywebsite.com/";
links[ "wiluna" ] = "http://mywebsite.com/";
links[ "gwalia" ] = "http://mywebsite.com/";
links[ "wallaby" ] = "http://mywebsite.com/";
links[ "sunrise" ] = "http://mywebsite.com/";
links[ "moora" ] = "http://mywebsite.com/";
links[ "marvel" ] = "http://mywebsite.com/";
links[ "flyingFox" ] = "http://mywebsite.com/";
links[ "ernest" ] = "http://mywebsite.com/";
links[ "rosebery" ] = "http://mywebsite.com/";
links[ "lyell" ] = "http://mywebsite.com/";
links[ "renision" ] = "http://mywebsite.com/";
links[ "kanowna" ] = "http://mywebsite.com/";
links[ "frogsLeg" ] = "http://mywebsite.com/";
links[ "tindals" ] = "http://mywebsite.com/";
links[ "miitel" ] = "http://mywebsite.com/";
links[ "higginsville" ] = "http://mywebsite.com/";
function listenerLoop():void {
var i:int;
for(i = 0; i < places.length; i++) {
(places[ i ] as IEventDispatcher).addEventListener(MouseEvent.CLICK, openLink);
}
}
function openLink(event:MouseEvent):void {
var link:URLRequest = new URLRequest(links[ event.target ]);
navigateToURL(link, "_blank");
}
listenerLoop();
Maintenant, tout fonctionne bien jusqu'à ce que je clique sur le point, me donner cette erreur:
TypeError: Error #2007: Parameter url must be non-null.
at global/flash.net::navigateToURL()
à
navigateToURL(link, "_blank");
Donc, il est évident pour moi que l'openLink(); la fonction ne fait pas ce que je veux. Je peux en quelque sorte deviner parce que event.target n'est pas retourné dans une chaîne ou ne tire pas le type du tableau? Je suis un ActionScripter très rouillé si nue avec moi :).
Des idées sur comment faire fonctionner cette chose? Bravo pour toute aide.
Ahaha, une solution si simple. Merci Andy :) Voulez-vous dire déclarer le type de données du tableau associatif en tant qu'objet plutôt qu'en tant que tableau? ie var array: Object = new Object(); ? – Jarryd