Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 条件:TypeError:Error 2007:参数文本结尾处的错误必须为非null_Xml_Actionscript 3_Conditional - Fatal编程技术网

Xml 条件:TypeError:Error 2007:参数文本结尾处的错误必须为非null

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 在这个数组/文本加载器上 …但不知道如何修复它。我是否需要完全放弃我在文本中循环的方法,或者我只是遗漏了一些次要的东西?很抱歉,如

好的,我正在尝试访问一个本地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 >

ifcount 第一行应该是ifcount 另一件事是,在没有发布的情况下,很难判断加载的XML发生了什么。加载storyText=xml.chapters.chapter.page后;在storyText.length上运行跟踪,以确保您实际使用的内容没有返回null。

我认为应该是这样

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