Xml 条件:TypeError:Error 2007:参数文本结尾处的错误必须为非null
好的,我正在尝试访问一个本地XML文档,它由章节组成,每个章节都有几页文本。我有一个条件监听按钮点击,可以说是翻页。if工作正常:它在页面之间循环,直到到达末尾。但是else条件不起作用。它甚至不会追踪任何东西。我知道这是因为这个错误: TypeError:Error 2007:参数文本必须为非空。 at flash.text::TextField/set text 在这个数组/文本加载器上 …但不知道如何修复它。我是否需要完全放弃我在文本中循环的方法,或者我只是遗漏了一些次要的东西?很抱歉,如果此代码中的某些内容太草率。。。为了让它工作,我对它做了很多调整。谢谢你的帮助 以下是相关代码:Xml 条件:TypeError:Error 2007:参数文本结尾处的错误必须为非null,xml,actionscript-3,conditional,Xml,Actionscript 3,Conditional,好的,我正在尝试访问一个本地XML文档,它由章节组成,每个章节都有几页文本。我有一个条件监听按钮点击,可以说是翻页。if工作正常:它在页面之间循环,直到到达末尾。但是else条件不起作用。它甚至不会追踪任何东西。我知道这是因为这个错误: TypeError:Error 2007:参数文本必须为非空。 at flash.text::TextField/set text 在这个数组/文本加载器上 …但不知道如何修复它。我是否需要完全放弃我在文本中循环的方法,或者我只是遗漏了一些次要的东西?很抱歉,如
package {
import as3101.ui.formatA;
import flash.display.*;
import flash.text.*;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.*;
import flash.utils.Dictionary;
import flash.events.*;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class thisArray extends MovieClip {
//XML Vars
private var xml:XML;
private var storyKeys:Dictionary = new Dictionary();
private var xmlLoader:URLLoader = new URLLoader();
private var url:URLRequest = new URLRequest("storyXML.xml");
//Text and Button Vars
private var formatting:formatA;
private var txta:TextField = new TextField();
private var storyBox:Sprite = new Sprite();
private var count:uint = 0;
private var storyText:XMLList;
private var nxtBtn:Sprite = new Sprite();
public function thisArray() {
addChild(storyBox);
storyBox.addChild(txta);
storyBox.x = 0;
storyBox.y = 0;
txta.x = 0;
txta.y = 0;
storyBox.width = 500
storyBox.height = 400;
storyBox.buttonMode = true;
storyBox.mouseChildren = false;
xmlLoader.load(url);
xmlLoader.addEventListener(Event.COMPLETE, onXmlLoad);
//external class formatA sets my text for size, font, etc...
formatting = new formatA();
formatting.defField = txta;
txta.defaultTextFormat = formatting.myFormat;
txta.wordWrap = true;
trace ("class loaded: " + this);
}
private function onXmlLoad(e:Event):void {
xml = new XML(xmlLoader.data);
trace("XML Loaded");
storyText = xml.chapters.chapter.page;
txta.text = storyText[count];
buttonMaker();
}
public function textLoader(e:MouseEvent):void {
count++;
if(count < txta.length)
{
trace("hi");
txta.text = storyText[count];
} else if (count == storyText.length) {
trace("bye");
removeChild(nxtBtn);
}
}
public function buttonMaker() {
nxtBtn.graphics.lineStyle(3,333333);
nxtBtn.graphics.beginFill(0x333333);
nxtBtn.graphics.drawRect(0,0,50,30);
nxtBtn.graphics.endFill();
nxtBtn.x = 480;
nxtBtn.y = 220;
addChild(nxtBtn);
nxtBtn.buttonMode = true;
nxtBtn.name = ("nextButton");
nxtBtn.addEventListener(MouseEvent.CLICK, textLoader);
}
这是我的XML文档:
<?xml版本=1.0编码=utf-8?>
< page num="0" > Text Block A < /page >
< page num="1" > Text Block B < /page >
< page num="2" > Text Block C < /page >
< page num="3" > Text Block D < /page >
if(count < txta.text.length)
您需要获取文本区域中文本的长度,而不是文本区域本身的长度:好的!!我刚弄明白我的问题是什么。卡尔,你是对的。。。我需要将计数变量与storyText.length进行比较。我的问题是按如下方式键入:
if(count < storyText.length)
if(count < storyText.length())
当我应该这样打的时候:
if(count < storyText.length)
if(count < storyText.length())
有人能告诉我为什么这样做吗?我想说添加可以防止它为null,但我认为这是不对的。再次感谢您帮助我解决此问题。谢谢各位,我今晚将尝试一下,看看它是否解决了问题。如果没有,我也将上载xml文件的示例。当我将count