如何让我的命中测试对象工作,图片是:
另一个类中的一个对象应该感知来自不同类的对象何时通过hitTestObject触摸它。
的ActionScript:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
public class Grey extends Sprite {
var blue:Blue = new Blue();
private var changes:Boolean
private var directions
private var speed:int = 20;
public function Grey() {
// constructor code
stage.addEventListener(Event.ENTER_FRAME, loop)
/*stage.addEventListener(KeyboardEvent.KEY_DOWN, pressed)*/
}
function loop(e:Event){
movements();
hitTesting();
}
function movements(){
if (changes==true){
directions = -1;
}else{
directions = 1;
}
x+=speed * directions
}
function hitTesting(){
if (this.hitTestObject(blues)){
changes=true
}
}
}
}
答案 0 :(得分:0)
几天前刚刚为我正在进行的游戏做了这件事:D
首先,你没有在任何地方宣布布鲁斯。你想要做的是将所有Blue对象存储到一个数组中,如下所示:
var blues:Array = new Array();
然后,无论何时创建数组,请确保将其放入:
var blue:Blue = new Blue();
blues.push(blue); //yay variable names!
最后,在你的EnterFrame函数(或hitTesting中,因为你在on frame函数中调用它):
for each(var blue:Blue in blues){
if (this.hitTestObject(blue)){
changes = true; //or whatever functionality. I use a contact function in the object hit
}
}
编辑:有一点需要注意:你的Blue课程并不知道灰色触摸它。你设置代码的方式看起来好像灰色意识到蓝色,但蓝色并不关心这种或那种方式。只是想确保这一点很清楚,因为你提问的方式。