在Actionscript2中导致滞后的符号的多个实例

时间:2015-05-03 22:03:48

标签: flash adobe actionscript-2

我正在尝试制作类似于Synthesia的基于钢琴的Flash游戏。我已经制作了一个符号" char"的多个实例(char0,char1等)。 &安培;将它们存储在一个数组中,以表示位于不同位置的落下的钢琴音符。以下是我在音符和音符之间实现的碰撞检测代码。按键。

但是随着我所包含的笔记越多,滞后就会增加。如同,120 FOR循环迭代显着减慢了游戏速度。

for(var i = 0; i <120; i++){

_root.charac[i] = _root['char'+i];      //instances stored in charac array


    var ch = _root.charac[i];

    ch._y += 1;         //speed of falling notes



    if(ch._x>this._x && ch._x<this._x+this._width && ch._y>this._y && ch._y<this._y+this._height && !this.isBlack){


    _root.playSound(this);

 }

 }

任何优化此代码的方法?或者有没有其他方法来存储那么多实例(注释)?

1 个答案:

答案 0 :(得分:0)

问题是你需要120多个请求,你最好检查是否有来自所有键的1个键,而不是将if语句附加到所有键。

例如:   如果鼠标按下,则检查通过存储在数组中的每个键的同名来击中哪个键。

它已经有一段时间了,我不确定你把项目放在一起的确切程度。理论:在数组中有120个键...在mouseMove上获取鼠标x和y坐标的位置,在mouseDown上(单击)...将鼠标x,y与数组x,y中的当前键进行比较位置..通过遍历数组中的每个键值,直到你有一个匹配...你有被击中的键...现在你有两个事件的所有键......

它的逻辑,类似于光线投射

你会得到这个想法:)