我一直在尝试ExternalInterface
通过 xml 文件将信息的变量传递到 Flash AS3 中,但无法弄清楚如何让数据随着每次新选择而改变。
我设法让它调用ExternalInterface
并使用初始数据,但我似乎无法让它改变。
我在 HTML 中有以下代码,用于 PrettyPhoto 灯箱,到目前为止它按预期工作:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto({hideflash: false, allow_resize: true, callback: function() {PAYPAL.apps.MiniCart.hide(null);}
});
});
function launchPrettyPhoto(urlContent) {
$.prettyPhoto.open(urlContent);
}
</script>
要调用 xml 数据,我有许多字段表示图像、拇指、标题、描述,以及用于激活灯箱的链接的 url,如下所示:
function loadXML(event:Event):void {
xml=new XML(event.target.data);
var total:Number=xml.pic.length();
for (var i:int = 0; i < total; i++) {
thumbs[i]=xml.pic.thumb.text()[i];
images[i]=xml.pic.image.text()[i];
titles[i]=xml.pic.title.text()[i];
descriptions[i]=xml.pic.desc.text()[i];
wwwlink[i]=xml.pic.link.text()[i];
}
loadThumbs();
trace("loading thumbs");
loader.removeEventListener(Event.COMPLETE, loadXML);
}
在图像的每次更改中,数据都会通过以下几点进行更新,其中(理想情况下)ExternalInterface
“url”也应该更改,这是我遇到的问题。
在每个新的选择中,数据都会被传递:
mainLoader.load(mainRequest);
title_txt.text = titles[theImg]; //Output title
desc_txt.text = descriptions[theImg]; Output Description
link_txt.htmlText = wwwlink[theImg]; Output URL
我有一个按钮来调用启动ExternalInterface
下面的函数:
function callPrettyPhoto(url:String):void{
trace("Calling lightbox");
if (ExternalInterface.available) {
// ExternalInterface calls function
ExternalInterface.call("launchPrettyPhoto", url);
}
trace(ExternalInterface.call);
}
function initCall(event:MouseEvent):void {
// Call ExternalInterface
callPrettyPhoto(xml.pic.link.text());
}
就目前而言,一切正常,除了当我更改图像时它无法更新或更改“url”,其余的工作都在它相应地更新所有内容并根据需要调用灯箱。
从我所见,下面的行是发起者,因为它似乎引用了 xml 文件中的第一个 url,并且无法更新其余部分:
callPrettyPhoto(xml.pic.link.text());
我已经尝试过,但无法完全将其提交并希望您有经验的输入到我哪里出错了。
XML
<images>
<pic>
<image>images/01_00_00.jpg</image>
<thumb>images/_t01_00_00.jpg</thumb>
<title>First Picture</title>
<desc>Typical description</desc>
<link><![CDATA[http://www.website.com/_i01_00_01.html?iframe=true&width=100%&height=100%]]></link>
</pic>
</images>