在我正在制作的一款游戏中,我试图将精灵放在一个命中框的顶部。我能想到的最好的方法是创建两个数组;一个用于命中框,另一个用于精灵,然后通过一个for循环让精灵停留在它们各自的命中框的顶部,该循环将在它自己的脚本中。
问题是,当我试图让这两个数组中的MovieClips做任何事情时,它都不起作用。如果我跟踪精灵的X或Y位置,我会在我的终端中得到"undefined“。我将自上而下解释这一点。
下面是我的类的摘录,其中包含for循环(Dasengine是我的主类fyi)
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=覆盖坏人。它的MovieClip作为hitbox顶部的东西,这是玩家将看到的
badde =就是hitbox。这里面包含了敌人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"
}发布于 2013-01-18 09:58:49
您的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"
}https://stackoverflow.com/questions/14390728
复制相似问题