オブジェクトプールの設定に問題があります。私はプールロジックを扱うための "BallPoll"カスタムクラスを作成しました。最初にfillPool()を呼び出して、20個のBallオブジェクトを配列に追加します。次に、ドキュメントクラスでボールを作成するときにプール配列をチェックします。それは動作していないと私は理由がわからない。オブジェクトプールが機能しない
------ドキュメントクラス---------
function throwBall(e:TimerEvent):void {
if (mouseY>stage.stageHeight-180) {
return;
}
var tBall:Ball = Pool.getBall(new Point(mouseX,mouseY),new Point(Math.random()+Math.random()*5+Math.random()*8),gravity,friction);
tBall.gotoAndStop(BallColor);
addChild(tBall);
ballArray.push(tBall);
}
----------- BallPoolクラス---------
package {
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.system.*;
import Ball;
public class BallPool extends MovieClip {
private static const gravity:Number=1.5;
private static const friction:Number=.50;
public var STOREDBALLS:Array = new Array();
public function BallPool() {
fillPool();
}
public function fillPool() {
for (var i:int = 0; i < 20; i++) {
var NewBall:Ball = new Ball(new Point(mouseX,mouseY),new Point(Math.random()+Math.random()*5+Math.random()*8),gravity,friction);
STOREDBALLS.push(NewBall);
}
}
public function getBall($position:Point, $vector:Point, $gravity:int, $friction:Number):Ball {
if (STOREDBALLS.length > 0) {
var counter:int = 0;
trace(STOREDBALLS.length);
var ball:Ball = STOREDBALLS[counter];
trace("44");
counter ++;
return ball;
} else {
return new Ball($position, $vector, $gravity, $friction);
}
//return null;
}
}
}
どの部分が機能していませんか?何が問題なのですか? – Cadin
getBall関数が機能していません。私はどのようにSTOREDBALLS配列をループし、どのボールがステージ上にあり、どのボールがステージ上にないのかを判断することはできません。また、親Documentクラスからボールを適切にリサイクルします。ありがとうございました – user1114288