循环浏览XML并使用按钮返回开始-AS3
我正在尝试创建一个小应用程序,只需按一个按钮(下一步或上一步)即可循环浏览XML文档。到目前为止,我已经完成了循环并将信息导入ok。当它到达XML中的最后一条记录并点击next按钮时,我希望它显示第一条记录。它目前正在这样做,但是你必须按下按钮两次。它只是一个小XML文件,有5条记录 顺便说一下,这是动作脚本3循环浏览XML并使用按钮返回开始-AS3,xml,actionscript-3,flash,Xml,Actionscript 3,Flash,我正在尝试创建一个小应用程序,只需按一个按钮(下一步或上一步)即可循环浏览XML文档。到目前为止,我已经完成了循环并将信息导入ok。当它到达XML中的最后一条记录并点击next按钮时,我希望它显示第一条记录。它目前正在这样做,但是你必须按下按钮两次。它只是一个小XML文件,有5条记录 顺便说一下,这是动作脚本3 import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import fl
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.MouseEvent;
var myXML:XML;
var myLoader:URLLoader = new URLLoader;
myLoader.load(new URLRequest("book.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
var i:int;
i = 0;
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
txtTitle.text = myXML.film.title[i];
txtReviewScore.text = myXML.film.rating[i];
}
btnNext.addEventListener(MouseEvent.MOUSE_DOWN, moveNext);
function moveNext(event:MouseEvent)
{
if (i == 5)
{
i = 0
}
else
i = i + 1;
txtTitle.text = myXML.film.title[i];
txtReviewScore.text = myXML.film.rating[i];
}
btnPrevious.addEventListener(MouseEvent.MOUSE_DOWN, movePrevious);
function movePrevious(event:MouseEvent)
{
if (i == 0)
{
i = 5
}
else
i = i - 1;
txtTitle.text = myXML.film.title[i];
txtReviewScore.text = myXML.film.rating[i];
}
希望这是有意义的,如果我需要更多的解释,我会尽我所能
干杯您的问题是,在尝试循环之前,您需要等待
i==5
(因此需要按两次“下一步”按钮。因为您处理的是一个索引为零的元素列表,所以当i==4
时,您实际上是最后一个元素(您的元素编号为0、1、2、3、4)
如果您将i==5
更改为i==4
,这应该可以按预期工作,但是,正如我在上面的评论中提到的,您不应该硬编码这个数字。您应该像这样从XML中获取它:
function moveNext(event:MouseEvent)
{
if (i == myXML.film.length()-1)
{
i = 0;
}
else
i = i + 1;
txtTitle.text = myXML.film.title[i];
txtReviewScore.text = myXML.film.rating[i];
}
这样,如果您的XML
发生了变化,并且突然出现了多于或少于5条记录,那么代码仍然可以工作
编辑以回应OP的评论:
由于您在将i
用作索引之前正在递减,因此不希望将其重置为length-1
。相反,您只需将其设置为length
:
function movePrevious(event:MouseEvent)
{
if (i == 0)
{
i = myXML.film.length();
}
else
i = i - 1;
txtTitle.text = myXML.film.title[i];
txtReviewScore.text = myXML.film.rating[i];
}
您从何处获取数字5?我假设这是记录数,但从
XML
文档中获取该信息可能更有意义,而不是硬编码该值。您好@Marcela-非常感谢您的回答。下一步按钮正在工作,感谢您向我介绍.length属性的正确用法。我一直在尝试对“上一条”按钮执行相同的操作(因此,当您到达第一条记录时,它会跳回到最后一条记录),但是我不确定这是如何工作的?我理解长度()-1表示找不到任何记录,并且i=0会将其发送到第一条记录,但如何硬编码以跳转到最后一条记录?我已更新了答案,使用length
方法将更正的movePrevious
方法包括在内。非常感谢@Marcela。提高了我对Actionscript的理解!)