【问题标题】:1119: Access of possibly undefined property monster through a reference with static type Enemy. AS31119:通过静态类型 Enemy 的引用访问可能未定义的属性怪物。 AS3
【发布时间】:2013-11-04 06:18:10
【问题描述】:

Main.as

package{
import flash.display.MovieClip;
import flash.events.*;

public class Main extends MovieClip {
    public var _root:MovieClip;

    public var monsterContainer:MovieClip = new MovieClip();


    public var delay = 30;

    public function Main(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        addChild(monsterContainer);
        delay -= 1;
        if(delay <= 0){
            var spawn:Slime = new Slime();
            spawn.x = startPoint.x;
            spawn.y = startPoint.y;
            monsterContainer.addChild(spawn);
            delay = 30;
        }

    }
}

箭头.as

package{
import flash.display.MovieClip;
import flash.events.*;

public class Arrow extends MovieClip {
    public var _root:MovieClip;

    public var facingID;

    public function Arrow(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        trace(_root.monsterContainer == null);

    }
}

敌人.as

package{
import flash.display.MovieClip;
import flash.events.*;

public class Enemy extends MovieClip {
    public var _root:MovieClip;

    //Status
    public var monsterSpeed;
    public var facing = "Right";

    //CallingArrow
    public var down:Down = new Down();

    public function Enemy(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        //Facing Movement
        if(_root.pausing == false){
            if(facing == "Right"){
                this.x += monsterSpeed;
            }else if(facing == "Left"){
                this.x -= monsterSpeed;
            }else if(facing == "Down"){
                this.y += monsterSpeed;
            }else if(facing == "Up"){
                this.y -= monsterSpeed;
            }
        }


    }
}

下来.as

package  {
import flash.display.MovieClip;
import flash.events.*;


public class Down extends Arrow {

    public function Down(){

        facingID = "Down";
    }
}

史莱姆.as

package  {
import flash.display.MovieClip;
import flash.events.*;


public class Slime extends Enemy {

    public function Slime(){

        monsterSpeed = 5;

    }
}

时间轴上没有额外的代码,只需 stop();

我收到 1119 错误,当我想在 slime 中访问一个movieClip 时,我给它的实例名称是怪物,请帮忙!

下载链接:http://www.mediafire.com/download/hz5tptkgftwdipw/Tower_Defense.rar

只有 15KB,使用 CS6 请帮忙!

【问题讨论】:

    标签: actionscript-3 flash adobe flash-cs6


    【解决方案1】:

    开启调试

    您共享的代码比您可能需要的要多(包括.rar 文件)。要找到问题的原因,您(以及 StackOverflow 上的人)需要知道您正在编程的哪一行遇到此错误。如果您使用的是 Flash IDE CS6,则可以通过转到您的发布设置并启用“允许调试”来启用它。这将导致您的模棱两可的错误...

    null object reference at myDocument/doSomething()

    ...更清晰...

    null object reference at myDocument/doSomething() package\myClass.as:20

    ...现在表示要在代码中的哪一行查找您的问题。


    使用调试控制台

    使用调试编译模式调出调试控制台。这将使您立即查看相关代码行、调用堆栈以及所有可用变量的状态。没有程序员应该没有它。


    Enemy.monster

    这是问题的症结所在:在某个地方,您正在调用 Enemy.monster,而您的 Enemy 类中没有任何属性被称为(方法或其他方式)。

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多