こんにちは、次のコードが組み込まれているときに、かなりの遅延が発生していることに気付きました。
public function impassable_collisions():void { //prevent player from moving through impassable mcs
for each(var mc:MovieClip in impassable) {
var bitmap = createBitmapClone(mc); //return clone of bitmap of mc, accounting for transformations
var bounds:Rectangle = player.getRect(bitmap);
var playerCenterX:Number = bounds.left + bounds.width * .5;
var playerCenterY:Number = bounds.top + bounds.height * .5;
//Test for a pixel perfect collision against a shape based on a point and radius,
//returns the angle of the hit or NaN if no hit.
var hitAngle:Number = hitTestPointAngle(bitmap, playerCenterX, playerCenterY, player.height/2);
if(!isNaN(hitAngle)){
// move player away from object
player.x -= int(Math.cos(hitAngle) * player.speed*timeDiff);
player.y -= int(Math.sin(hitAngle) * player.speed*timeDiff);
}
}
}
したがって、この関数は、enterFrame リスナーから呼び出される別の関数から呼び出されます。任意の時点でおそらく 5 ~ 30 個のムービークリップを含む配列をループしています。次に、指定された mc がビットマップに複製され、そのビットマップを使用して、それ自体と別のビットマップ (「プレーヤー」) との間の衝突をテストします。 . 私は、かなり非効率的な何かが起こっていると想定しています。その結果、「プレイヤー」が動いたときにラグが発生します。問題が何であるか/それに対する解決策を知っている人はいますか?
かなりあいまいな質問のタイトルで申し訳ありません
ありがとう