【问题标题】:Call event function in another event function As3在另一个事件函数 As3 中调用事件函数
【发布时间】:2016-01-24 03:54:03
【问题描述】:

我正在另一个函数中调用函数,如下所示:

import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;


var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE,loadXML);

var xmlData:XML = new XML();

function loadXML(e:Event = null):void{

    xmlData = new XML(e.target.data);
    //var production:String = xmlData.production.app_id.text();
    trace(xmlData);
    var states:String = xmlData.state.place.text();
    var desc:String = xmlData.state.description.text();
    var image:String = xmlData.state.image.text();
    trace('this is working');   
}
xmlLoader.load(new URLRequest('test.xml'));
obj.addEventListener(MouseEvent.MOUSE_OVER,fl_MouseOverHandler);
function fl_MouseOverHandler(event:MouseEvent):void
{
    loadXML();
}

在这种情况下出现警告:Cannot access a property or method of a null object reference 我该如何解决这个问题?上面提到的是完整的代码。

【问题讨论】:

  • 你实际上并没有在任何地方加载xml....因为你直接调用loadXML(),e为null,所以由于e为null,你不能访问target属性从它。
  • 我在加载 xml 时更新了我的代码同样的警告
  • 首先,它应该向您显示错误所在的行。其次,由于您的loadXML() 是一个需要数据的事件侦听器,您应该永远使用空事件手动调用它。因此,您应该删除调用loadXML() 的代码并等待完成,或者在ioError and securityError 上添加一个事件侦听器,以检查您是否被允许加载该文件并实际加载。
  • 并删除Event 参数的默认值null,因为正如@Vesper 解释的那样,使用该值执行函数没有任何意义。反之亦然:如果e == null,您想中止函数执行。
  • 空错误不是警告,而是错误。

标签: actionscript-3 flash


【解决方案1】:

当在没有输入的情况下调用你的函数时,e.target 为空,这是一个例外,你最常使用“if”。

您的解决方案是:

import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;


var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE,loadXML);

var xmlData:XML = new XML();

function loadXML(e:Event = null):void
{

    if (e!=null)
    {
        xmlData = new XML(e.target.data);
    }
    //var production:String = xmlData.production.app_id.text();
    trace(xmlData);
    var states:String = xmlData.state.place.text();
    var desc:String = xmlData.state.description.text();
    var image:String = xmlData.state.image.text();
    trace('this is working');
}
xmlLoader.load(new URLRequest('test.xml'));
obj.addEventListener(MouseEvent.MOUSE_OVER,fl_MouseOverHandler);
function fl_MouseOverHandler(event:MouseEvent):void
{
    loadXML();
}

祝你好运

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多