在我正在制作的游戏中,我正试图将精灵放在一个命中框之上。我能想到的最好的方法是制作两个数组;一个用于命中框,一个用于精灵,然后让精灵通过for循环保持在各自的命中框之上。
问题是,当我试图让任何一个数组中的MovieClip做任何事情时,它都不起作用。如果我对精灵的X或Y位置进行跟踪,我的终端中会出现“未定义”。我将从上到下解释这一点。
以下是我班上的摘录,其中包含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 = Overlay baddie。它的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"
}
答案 0 :(得分:1)
你的xloc变量是静态的 - 它属于nme_overlay,Class,而不是任何特定的实例。如果你在你的代码中执行此操作并且你有严格的模式(我怀疑你没有,因为你的代码中有很多东西应该给你至少警告),你会得到一个错误准确地告诉你:
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"
}