/*
p3d(x,y,z,mcName, mcID,depth);//构造
render();//刷新.
*/
import vector3d;
class p3d {
var pv3d:vector3d;
//3d对象决定位置.
var spv3d:vector3d;
//s--- screan屏幕.投射到屏幕的3d对象
var timeline:MovieClip;
//相对路径
var mc:MovieClip;
//所连结的mc.控制的就是他!
var scale:Number = 100;
//默认mc缩放比100;
var persN:Number;
//透视比例.与scale共同决定mx的大小.
function p3d(getx:Number, gety:Number, getz:Number, gettimeline:MovieClip, mcID:String, depth:Number) {
pv3d = new vector3d();
pv3d.x = getx;
pv3d.y = gety;
pv3d.z = getz;
timeline = gettimeline;
//trace(pv3d);
mc = this.timeline.attachMovie(mcID, mcID+"_"+depth, depth);
render();
}
function render():Void {
persN = pv3d.getPers();
spv3d = pv3d.persNew(persN);
trace(mc);
mc._x = spv3d.x;
mc._y = spv3d.y;
mc._xscale = mc._yscale=scale*persN;
mc.swapDepths(100000-pv3d.z*100);
}
}
这个也是测试,不过有效果了.
import vector3d;
import p3d;
function getwall(w:Number, h:Number, xNum:Number, yNum:Number):Number {
var x:Number, y:Number, z:Number;
var pts = new Array();
var depth:Number = 0;
for (var i = 0; i<=xNum; i++) {
for (var j = 0; j<=yNum; j++) {
x = w*(i/xNum-.5);
y = h*(j/yNum-.5);
//trace("i="+i+"x="+x+" y="+y);
z = 200;
pts.push(new p3d(x, y, z, this, "dot", depth++));
}
}
return pts;
}
wall = getwall(300, 300, 4, 6);
function arrayRotXY(p3dArray:Array, ax:Number, ay:Number):Void {
var i = p3dArray.length;
while (i--) {
p3dArray[i].pv3d.rotXY(ax, ay);
p3dArray[i].render();
}
}
this.onEnterFrame = function() {
this.arrayRotXY(wall,_ymouse/20, _xmouse/20);
};
p3d(x,y,z,mcName, mcID,depth);//构造
render();//刷新.
*/
import vector3d;
class p3d {
var pv3d:vector3d;
//3d对象决定位置.
var spv3d:vector3d;
//s--- screan屏幕.投射到屏幕的3d对象
var timeline:MovieClip;
//相对路径
var mc:MovieClip;
//所连结的mc.控制的就是他!
var scale:Number = 100;
//默认mc缩放比100;
var persN:Number;
//透视比例.与scale共同决定mx的大小.
function p3d(getx:Number, gety:Number, getz:Number, gettimeline:MovieClip, mcID:String, depth:Number) {
pv3d = new vector3d();
pv3d.x = getx;
pv3d.y = gety;
pv3d.z = getz;
timeline = gettimeline;
//trace(pv3d);
mc = this.timeline.attachMovie(mcID, mcID+"_"+depth, depth);
render();
}
function render():Void {
persN = pv3d.getPers();
spv3d = pv3d.persNew(persN);
trace(mc);
mc._x = spv3d.x;
mc._y = spv3d.y;
mc._xscale = mc._yscale=scale*persN;
mc.swapDepths(100000-pv3d.z*100);
}
}
这个也是测试,不过有效果了.
import vector3d;
import p3d;
function getwall(w:Number, h:Number, xNum:Number, yNum:Number):Number {
var x:Number, y:Number, z:Number;
var pts = new Array();
var depth:Number = 0;
for (var i = 0; i<=xNum; i++) {
for (var j = 0; j<=yNum; j++) {
x = w*(i/xNum-.5);
y = h*(j/yNum-.5);
//trace("i="+i+"x="+x+" y="+y);
z = 200;
pts.push(new p3d(x, y, z, this, "dot", depth++));
}
}
return pts;
}
wall = getwall(300, 300, 4, 6);
function arrayRotXY(p3dArray:Array, ax:Number, ay:Number):Void {
var i = p3dArray.length;
while (i--) {
p3dArray[i].pv3d.rotXY(ax, ay);
p3dArray[i].render();
}
}
this.onEnterFrame = function() {
this.arrayRotXY(wall,_ymouse/20, _xmouse/20);
};
回复Comments
作者:
{commentrecontent}