0

在我正在制作的游戏中,我试图将精灵放在命中框的顶部。我能想到的最好方法是制作两个数组;一个用于命中框,一个用于精灵,然后通过将在其自己的脚本中的 for 循环让精灵停留在各自的命中框之上。

问题是,当我尝试让任一数组中的 MovieClip 执行任何操作时,它都不起作用。如果我对精灵的 X 或 Y 位置进行跟踪,我会在终端中得到“未定义”。我将从上到下解释这一点。

这是我课程的摘录,其中包含 for 循环(Dasengine 是我的主要课程仅供参考)

for(var i:Number = 0; i < Dasengine.ovrcnt.length; i++){
        trace(Dasengine.ovrcnt[i].x); //returns "undefined"
                    trace(Dasengine.ovrcnt[i]); //returns "object Onmea"
Dasengine.ovrcnt[i].x = Dasengine.enemycnt[i].x;//this isn't working

            }

在另一个脚本中,当敌人生成时,他们会通过这种方法。

if(ENEMY SPAWN CONDITION IS MET ){
 Dasengine.baddie = new nme_spawn.Enemya(); //ENEMY HITBOX
 Dasengine.Obaddie = new nme_overlay.Onmea(); //ENEMY's sprite

 Dasengine.enemycnt[cntup] = [Dasengine.baddie]; //Enemy's Hit box movie clip is put in array meant for holding enemy movie clips

 Dasengine.ovrcnt[cntup] = [Dasengine.Obaddie]; //Enemy sprites that go over the hit boxes are stored here
 cntup++; //this is so movie clips are put in new parts of the array

                }

在我的主类中,影片剪辑声明如下,我也有 addChild 功能。

public static var Obaddie:nme_overlay.Onmea;
//^variable for sprite
public static var baddie:nme_spawn.Enemya;
//^variable for hitbox

也 Obaddie = 覆盖坏人。它是作为 hitbox 顶部的 MovieClip,这是玩家将看到的

badde = 只是命中框。这包含了敌人ai的“肉”。

我和一些朋友讨论过这个问题,他们认为我可能需要在数组中的对象的类中定义“X”是什么。所以我做了以下

    package nme_overlay {

import flash.display.*;
import flash.events.*;
import nme_spawn.*;



    public class Onmea extends MovieClip{

        // Constants:
        // Public Properties:
        // Private Properties:
        public static var xloc:int = 0;
        // Initialization:

        public function Onmea() { 

        this.addEventListener(Event.ENTER_FRAME, overlaya);

        }

        private function overlaya(e:Event){
        xloc = 55;
        //trace(xloc);
        }


    }

}

然后对于循环类我做了这个

            for(var i:Number = 0; i < Dasengine.enemycnt.length; i++){
        trace(Dasengine.ovrcnt[i]);//returns "object Onmea"
        trace(Dasengine.ovrcnt[i].xloc);//still returns "undefined"


        }
4

1 回答 1

1

您的 xloc 变量是静态的——它属于类 nme_overlay,而不是任何特定实例。如果你要在你的代码中执行此操作并且你有严格模式(我怀疑你没有,因为你的代码中有很多东西应该给你至少警告),你会得到一个错误确切地告诉你:

for(var i:Number = 0; i < Dasengine.enemycnt.length; i++){
        trace(Dasengine.ovrcnt[i]);//returns "object Onmea"
        trace(nme_overlay(Dasengine.ovrcnt[i]).xloc);//still returns "undefined"
}
于 2013-01-18T01:58:48.867 回答