0

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;
        }

    }
}

Arrow.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);

    }
}

Enemy.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;
            }
        }


    }
}

Down.as

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


public class Down extends Arrow {

    public function Down(){

        facingID = "Down";
    }
}

Slime.as

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


public class Slime extends Enemy {

    public function Slime(){

        monsterSpeed = 5;

    }
}

タイムラインに追加のコードはなく、stop(); だけです。

1119 エラーが発生しました。スライム内の movieClip にアクセスしたいときに、インスタンス名にモンスターを指定します。助けてください!

ダウンロードリンク: http://www.mediafire.com/download/hz5tptkgftwdipw/Tower_Defense.rar

たったの 15KB で、CS6 を使用しています 助けてください !

4

1 に答える 1

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(メソッドまたはその他)。

于 2013-11-04T15:17:13.917 に答える