擬似的な3D空間をボールがランダムに動き回るサンプルです。
function ThreeDPlott(target, fLength, wSize, centerX, centerY, n) {
/* プライベートプロパティ */
var target = target;
var fLength = fLength;
var wSize = wSize;
var centerX = centerX;
var centerY = centerY;
var n = n;
var scale = 0; // スケールで奥行き
// 各点の座標
var pX = new Array();
var pY = new Array();
var pZ = new Array();
// 各点の方向ベクトル
var pXS = new Array();
var pYS = new Array();
var pZS = new Array();
/* プライベートメソッド */
var threeDPlotter = function (i) {
scale = fLength/(fLength+pZ[i]);
world["p"+i]._x = (pX[i]*scale);
world["p"+i]._y = (pY[i]*scale);
world["p"+i]._xscale = world["p"+i]._yscale=100*scale;
};
/* グローバルメソッド(初期化) */
this.iniThreeDPlott = function() {
target.createEmptyMovieClip("world", 0);
target.world._x = centerX;
target.world._y = centerY;
// Initialize each sphere
for (var i = 0; i<n; i++) {
target.world.createEmptyMovieClip("p"+i, i);
target.world["p"+i].lineStyle(10, 0x0, 100);
target.world["p"+i].moveTo(0, 0);
target.world["p"+i].lineTo(1, 0);
pX[i] = pY[i]=pZ[i]=0;
pXS[i] = Math.random()*5;
if(Math.abs(pXS[i])>2.5){
pXS[i] = -pXS[i];
}
pYS[i] = Math.random()*5;
if(Math.abs(pYS[i])>2.5){
pYS[i] = -pYS[i];
}
pZS[i] = Math.random()*5;
threeDPlotter(i);
}
target.onEnterFrame = function() {
// This function moves the spheres
for (var i = 0; i<n; i++) {
pX[i] += pXS[i];
if (Math.abs(pX[i])>wSize) {
pXS[i] = -pXS[i];
}
pY[i] += pYS[i];
if (Math.abs(pY[i])>wSize) {
pYS[i] = -pYS[i];
}
pZ[i] += pZS[i]*scale;
if (Math.abs(pZ[i])>wSize) {
pZS[i] = -pZS[i];
}
threeDPlotter(i);
}
};
};
}
var obj = new ThreeDPlott(_root, 150, 100, 150, 150, 30);
obj.iniThreeDPlott();
下記の書籍を参考にしています。
»Flash Hacks―プロが教えるテクニック&ツール100選
»ランダム運動3 : ActionScript
»ランダム運動2-2 : ActionScript
»ランダム運動2-1 : ActionScript
»ランダム運動1 : ActionScript
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。