ランダム運動3 : ActionScript

Pocket

擬似的な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.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。