导航回另一帧时出现空对象引用错误

Posted

技术标签:

【中文标题】导航回另一帧时出现空对象引用错误【英文标题】:Getting a null object reference error when navigating back to another frame 【发布时间】:2013-02-20 06:29:44 【问题描述】:

我真的需要帮助,我已经被这个问题困扰了 2 天。导航回另一个框架时,我不断收到此错误!

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at product_fla::MainTimeline/frog_mcRelease()

frog_mc 继续进入另一帧!!不知道怎么回事。

谢谢

我的代码:

import flash.events.Event;

right_mc.visible=false; 
wrong_mc.visible=false;

var orig1X:Number=frog_mc.x;  
var orig1Y:Number=frog_mc.y;
var orig2X:Number=queen_mc.x;
var orig2Y:Number=queen_mc.y;
var orig3X:Number=apple_mc.x;
var orig3Y:Number=apple_mc.y; 

stage.removeEventListener(Event.ENTER_FRAME, frog_mcRelease);

frog_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);
frog_mc.addEventListener(MouseEvent.MOUSE_UP, frog_mcRelease);
queen_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);   
queen_mc.addEventListener(MouseEvent.MOUSE_UP, queen_mcRelease);   
apple_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragTheObject);    
apple_mc.addEventListener(MouseEvent.MOUSE_UP, apple_mcRelease);    

done_btn.addEventListener(MouseEvent.CLICK, checkAnswers);    
reset_btn.addEventListener(MouseEvent.CLICK, reset);

frog_mc.buttonMode=true;    
queen_mc.buttonMode=true;    
apple_mc.buttonMode=true;

function dragTheObject(event:MouseEvent):void  
    var item:MovieClip=MovieClip(event.target); 
    item.startDrag(); 
    var topPos:uint=this.numChildren-1; 
    this.setChildIndex(item, topPos);   
  


function frog_mcRelease(event:MouseEvent):void  
    var item:MovieClip=MovieClip(event.target); 
    item.stopDrag();       
    if (drop_frog.hitTestPoint(item.x,item.y))  
        item.x=drop_frog.x; 
        item.y=drop_frog.y; 
     else  
       item.x=orig1X; 
       item.y=orig1Y; 
     
;    

function queen_mcRelease(event:MouseEvent):void  
    var item:MovieClip=MovieClip(event.target); 
    item.stopDrag();   
    if (drop_queen.hitTestPoint(item.x,item.y))  
        item.x=drop_queen.x; 
        item.y=drop_queen.y; 
     else  
        item.x=orig2X; 
        item.y=orig2Y; 
     
;    

function apple_mcRelease(event:MouseEvent):void  
    var item:MovieClip=MovieClip(event.target); 
    item.stopDrag();   
    if (drop_apple.hitTestPoint(item.x,item.y))  
        item.x=drop_apple.x; 
        item.y=drop_apple.y; 
     else  
        item.x=orig3X; 
        item.y=orig3Y; 
     
;  

function checkAnswers(event:MouseEvent):void  
    if (drop_frog.hitTestPoint(frog_mc.x,frog_mc.y) && 
            drop_queen.hitTestPoint(queen_mc.x,queen_mc.y) && 
            drop_apple.hitTestPoint(apple_mc.x,apple_mc.y)) 
        wrong_mc.visible = false;
        right_mc.visible = true;
     else 
        wrong_mc.visible = true;
        right_mc.visible = false;
    


function reset(event:MouseEvent):void  
    frog_mc.x=orig1X; 
    frog_mc.y=orig1Y;     
    queen_mc.x=orig2X; 
    queen_mc.y=orig2Y;
    apple_mc.x=orig3X; 
    apple_mc.y=orig3Y; 

    right_mc.visible=false; 
    wrong_mc.visible=false; 

【问题讨论】:

是否有可能因为drop_frog 不存在而出错? drop_frog 是我的目标,当 frog_mc 投放它时 是的,我是从代码 sn-p 中收集到的。我要问的是你确定它存在于代码sn-p的范围内吗? 好的,所以我猜这个代码在你的主时间线的第 1 帧上,drop_frog 是否可能在不同的帧上,因此无法访问第 1 帧上的代码?另外,我不明白你说“frog_mc 不断进入另一个框架”是什么意思 抱歉,如果不访问 FLA,几乎不可能对多帧脚本进行故障排除。 【参考方案1】:

var item:MovieClip=MovieClip(event.target);

我认为您应该首先像这样创建对 MovieClip 的新引用

var item:MovieClip = new MovieClip();

我认为这应该可以解决问题

【讨论】:

能否在 if (drop_frog.hitTestPoint(item.x,item.y)) 处打个断点,看看 drop_frog 是有值还是为空?

以上是关于导航回另一帧时出现空对象引用错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Kotlin 在片段中引用 RecyclerView 时出现空指针错误

回收站视图 - 在空对象引用上

序列化对象时出现循环引用错误。一对多关联对象

在 tableview 中引用对象 pk 时出现 pk 错误,但我仍然可以从上下文中引用对象

Android ViewBinding 有时会在绑定对象处返回 null,因此在尝试访问视图时出现空指针异常

如何从下一帧 AS3 中引用对象