【问题标题】:as3 TypeError: Error #1009: Cannot access a property or method of a null object reference. -enterframeas3 TypeError:错误#1009:无法访问空对象引用的属性或方法。 -enterframe
【发布时间】:2012-12-31 09:20:46
【问题描述】:

我正在做一个简单的游戏,我还在学习 as3 如果hittestobject gotoframe,我想用omidae1在舞台上击中测试对象bila1 所有对象都在舞台上,带有正确的实例名称,主时间线如下 3 一切正常,但我得到空错误

TypeError:错误 #1009:无法访问 null 的属性或方法 对象引用。在 testpeframe_fla::MainTimeline/bling()[testpeframe_fla.MainTimeline::frame1:32]

所以问题是 Event.ENTER_FRAME,bling 我该如何解决?

import flash.events.MouseEvent ;
import flash.events.Event;
import fl.transitions.Tween;
import fl.transitions.easing.*;
btnt.visible = false;

butondrr.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
function fl_MouseClickHandler2(event:MouseEvent):void
{   
var myTween:Tween = new Tween(bila1, "x", Strong.easeOut, 500, 700, 1, true);
var myTweenm:Tween = new Tween(bila1, "y", Strong.easeOut, 250, 600, 8, true);
} 

stage.addEventListener(Event.ENTER_FRAME, bling);
function bling(event:Event):void 
{

if(bila1.hitTestObject(omidae1)) 
{
omidae1.visible = false;
btnt.visible = true;
}
}
removeEventListener(Event.ENTER_FRAME, bling);
stop();
btnt.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);

function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
gotoAndStop(5);
}

【问题讨论】:

  • 您是在运行时实例化显示对象,还是在舞台上创建并稍后通过调用它们的实例 id 来引用它们?
  • 我在舞台上创建了对象,然后调用了它们的实例
  • 我运行下面的代码并没有显示 if (bila1 == null) { trace("bila1 nuull"); } if (omidae1 == null) { trace("omid null"); } if (btnt == null) { trace("btnt 空"); }
  • 试试这个方法:trace(omidae1); & 查看价值
  • 没有显示相同的..

标签: actionscript-3 flash hittest


【解决方案1】:

在第 1 帧插入一个新帧(将所有其他帧向上移动一个,第 1 帧 -> 第 2 帧,等等)

可能发生的情况是您试图在 swf 完全加载之前访问内容。

在第一帧中添加:

addEventListener(Event.ADDED_TO_STAGE, ready);
stop();

function ready(e:Event):void {
    removeEventListener(Event.ADDED_TO_STAGE, ready);
    gotoAndPlay(2);
}

【讨论】:

  • 解决方案无法正常工作,我认为是因为 stop();如果我在相同错误上方的代码中删除 stop 并且我正在考虑它并且我想说有一个延迟直到 bila1 命中 omidae1 并且第二个我尝试在 2 帧上复制舞台上的所有对象并将动作代码放入第 2 帧,所以第 1 帧与所有对象将首先加载,但相同
  • 我想我知道问题 var myTweenm:Tween = new Tween(bila1, "y", Strong.easeOut, 250, 600, 8, true);只有在指定的 x 和 y 上,hittestobject 才会停止,所以第一次命中工作并且在没有 omidae 命中后因为不可见我必须打破循环或仅在我在 hittestobject 之后添加跟踪并看到很多时才击中的东西
  • 即使我想我知道问题出在哪里我不知道如何解决它..我尝试了一些把 myTweenm.stop();在 hittestobject 之后,bila1 在我得到相同的错误后立即停止
  • 我想我修好了 stage.addEventListener(Event.ENTER_FRAME, bling);替换为 addEventListener(Event.ENTER_FRAME, bling);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多