Actionscript 3 从另一个类调用一个类的movieclip,错误#1009
我得到一个错误:空对象引用的方法。我很困惑,不知道真正的原因是什么。Actionscript 3 从另一个类调用一个类的movieclip,错误#1009,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我得到一个错误:空对象引用的方法。我很困惑,不知道真正的原因是什么。 因此,我在舞台上得到了一个player movieClip,其中有一个“player_mc”实例,它将通过我的文档类进入player类。 玩家。作为 import flash.display.*; import flash.events.*; public class Player extends MovieClip { public var myPlayer:MovieClip; public func
因此,我在舞台上得到了一个player movieClip,其中有一个“player_mc”实例,它将通过我的文档类进入player类。
玩家。作为
import flash.display.*;
import flash.events.*;
public class Player extends MovieClip
{
public var myPlayer:MovieClip;
public function Player(player:MovieClip)
{
myPlayer = player;
addEventListener(Event.ENTER_FRAME,on_enter);
}
import flash.display.*;
import Components.Player.Player;
public class Game_Main extends MovieClip
{
public var player:Player;
public function Game_Main()
{
player = new Player(player_mc);
}
}
文档。作为
import flash.display.*;
import flash.events.*;
public class Player extends MovieClip
{
public var myPlayer:MovieClip;
public function Player(player:MovieClip)
{
myPlayer = player;
addEventListener(Event.ENTER_FRAME,on_enter);
}
import flash.display.*;
import Components.Player.Player;
public class Game_Main extends MovieClip
{
public var player:Player;
public function Game_Main()
{
player = new Player(player_mc);
}
}
现在我想问题就出在这里。我在舞台上有一个绿色的敌人电影剪辑,里面有基级敌人。敌人。作为
import flash.display.MovieClip;
import Components.Player.Player;
import flash.events.Event;
public class Enemy extends MovieClip
{
var theplayer:Player;
public function Enemy()
{
this.addEventListener(Event.ENTER_FRAME,on_enter);
}
public function on_enter(e:Event):void
{
if (this.hitTestObject(theplayer.myPlayer)) //calls player_mc from Player class
{
trace("hi");
}
}
}
我喜欢在敌人的功能上做的是,当敌人与“player_mc”(在舞台上)碰撞时,它会做一些事情。也许我的代码错了。如有任何帮助/提示,将不胜感激。谢谢 在你的敌人身上
var theplayer:Player;
未初始化。它是私有的,因此不能从外部定义它。这意味着例外来自这里
this.hitTestObject(theplayer.myPlayer)
您正试图从null调用myPlayer
在构造敌方类时尝试定义此变量
为了防止出现空异常,您可以检查该层是否为空
public function on_enter(e:Event):void
{
if (theplayer && this.hitTestObject(theplayer.myPlayer))
{
trace("hi");
}
}
为了扩展ZuyEL所说的内容,您的变量没有在您的敌人类中全局定义,因为您只是在敌人函数中添加了一个var。相反,请执行以下操作
public var thePlayer:Player;
在你的敌人职业结束后,在敌人行动之前写下以上内容。现在它可供全班使用,以后调用时不再为空。我知道这很愚蠢,但你能告诉我你的意思吗?我最近只是在学习as3,很抱歉我太笨了,没什么好道歉的。更改玩家:玩家代码>到<代码>公共玩家:玩家就像约翰·道森说的。别忘了定义绿色敌人。玩家=你的玩家。另请参阅我的最新答案