AS3 hitTestObject不同的类

时间:2014-05-19 18:13:54

标签: actionscript-3

如何让我的命中测试对象工作,图片是:

另一个类中的一个对象应该感知来自不同类的对象何时通过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
        }
    }
}

}

1 个答案:

答案 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课程并不知道灰色触摸它。你设置代码的方式看起来好像灰色意识到蓝色,但蓝色并不关心这种或那种方式。只是想确保这一点很清楚,因为你提问的方式。