我正在尝试为农贸市场创建互动地图。用户将光标悬停在看台上,弹出农场和农场主的名字。点击该按钮后,用户会将用户重定向到bloomington.in.gov网站上的农民页面。 .swf为farm / farm / url数据读取.xml文件,因此.swf可以更加动态。
.swf将位于bloomington.in.gov域中的某个位置,但我无法访问它以测试它是否可以在那里工作。因此,我试图通过在adobe flash player或chrome中的不同计算机上的闪存驱动器上运行来测试.swf。
当我在Adobe Flash中测试文件时,一切似乎都有效,但当我尝试发布.swf并在Adobe Flash Player中运行时,我收到以下错误消息:
SecurityError:错误#2028:本地文件系统SWF文件文件:/// G | /FarmersMarketMap/FarmersMarketMap2.swf无法访问Internet URL https://bloomington.in.gov/documents/viewDocument.php?document_id=7483。 at global / flash.net :: navigateToURL() 在MethodInfo-7()
似乎加载了xml文件,因为显示了服务器场/农场名称,但URL似乎存在此安全问题。
我玩过将我与外部网站联系起来的Flash游戏。为什么我不允许这样做?
我已尝试过互联网的各种建议:
或者,当.swf最终嵌入到bloomington.in.gov域中时,所有链接(因此在该域内)是否突然起作用?尽管如此,它的神经紧张还是不知道它是否会提前发挥作用。
以下是我的代码:
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.Font;
//http://www.republicofcode.com/tutorials/flash/as3text/;
var farmFont:Font = new nevis as Font;
var farmerFont:Font = new DistrictPro as Font;
//FarmText Format
var farmFormat:TextFormat = new TextFormat();
farmFormat.font = farmFont.fontName;
farmFormat.size = 28;
farmFormat.align = TextFormatAlign.LEFT;
//FarmerText Format
var farmerFormat:TextFormat = new TextFormat();
farmerFormat.font = farmerFont.fontName;
farmerFormat.size = 24;
farmerFormat.align = TextFormatAlign.LEFT;
//Set Farm Text Attributes
var farmText:TextField = new TextField();
farmText.embedFonts = true;
farmText.defaultTextFormat = farmFormat;
farmText.antiAliasType = AntiAliasType.ADVANCED;
farmText.text = "This is the Farm Text.";
farmText.x = 324.15;
farmText.y = 42.1;
farmText.autoSize = "left";
//Set FarmerTextAttributes
var farmerText:TextField = new TextField();
farmerText.embedFonts = true;
farmerText.defaultTextFormat = farmerFormat;
farmerText.antiAliasType = AntiAliasType.ADVANCED;
farmerText.text = "This is the Farmer Text";
farmerText.x = 324.15;
farmerText.y = 70.1;
farmerText.width = 475.85;
farmerText.wordWrap = true;
//Default Text
var firstLine:String = "Vendor Locations";
var secondLine:String = "Click on market spaces for more information.";
farmText.text = firstLine;
farmerText.text = secondLine;
addChild(farmText);
addChild(farmerText);
//http://www.republicofcode.com/tutorials/flash/as3xml/
var XMLinput:XML;//var variableIdentified:DataType;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("MarketSpreadsheet.xml"));
//loads xml file;
myLoader.addEventListener(Event.COMPLETE, processXML);
//checks for when xml is loaded, processXML=function to be done when xml is loaded;
var i:int;//counter
//var j:int;//nested counter
//generates the xml variable data array
var XMLData:Array = new Array(4);
for (i=0; i<4; i++)
{
XMLData[i] = new Array(100);
}
function processXML(e:Event):void
{
XMLinput = new XML(e.target.data);
for (i=0; i<100; i++)
{
if (isNaN(Number(XMLinput.*.Lot[i])) == false)
{
XMLData[0][i] = ("N" + XMLinput.*.Lot[i]);
}
else
{
XMLData[0][i] = XMLinput.*.Lot[i];
}
XMLData[1][i] = XMLinput.*.Farm[i];
XMLData[2][i] = XMLinput.*.Farmer[i];
XMLData[3][i] = XMLinput.*.Link[i];
}
//Add the button event handler to the buttons' parent clip.
butts.addEventListener(MouseEvent.CLICK, buttClick);
butts.addEventListener(MouseEvent.MOUSE_OVER, buttOver);
butts.addEventListener(MouseEvent.MOUSE_OUT, buttOut);
//Button Handlers
function buttClick(e:MouseEvent)
{
trace(e.target.name + " Click");
for (i=0; i<XMLData[0].length; i++)
{
if (XMLData[0][i] == e.target.name)
{
navigateToURL(new URLRequest(XMLData[3][i]));
trace(XMLData[3][i]);
}
}
}
function buttOver(e:MouseEvent)
{
for (i=0; i<XMLData[1].length; i++)
{
if (XMLData[0][i] == e.target.name)
{
farmText.text = XMLData[1][i];
farmerText.text = XMLData[2][i];
}
}
}
function buttOut(e:MouseEvent)
{
farmText.text = firstLine;
farmerText.text = secondLine;
}
}
答案 0 :(得分:0)
LDMS是对的,它是设计上的本地/托管安全问题。要正确测试是否要在网站上运行某些内容,您需要尽可能地匹配托管环境。
在大多数情况下,托管您的SWF以及在任何Web服务器(甚至是本地Web服务器)上相对于SWF文件加载的所有文件,并尝试一下。