让我们用Flash做3D动画
来源:互联网 发布:程序员bug致损失400亿 编辑:程序博客网 时间:2024/05/02 00:20
有人会问了:Flash在开发之初为了减小播放器的体积,并没有设置关于3D方面的应用.其实不然,所有的3D效果其实都是二维图形通过3D算法得出的.
下面让我们通过3D算法来做一个简单的3D导航.
1.新建一个按钮实例,将其在库中的链接命名为"text"
2.在按钮实例的第一帧输入如下代码:
// 设定角度和弧度变量
var radian:Number = 0;
// 圆心座标(x和z的中心点)
var centerX:Number = Stage.width/2-40;
var centerY:Number = Stage.height/2-20;
//
var r:Number = 100;
//半径值
var z:Number;
//z轴值(公式里的d2)
var d1:Number = 50;
//眼睛到屏幕的距离
var scale:Number;
//透视缩放比率
var y:Number;
//
var rotation:Number = 0;
//当前旋转的角度
function onEnterFrame() ...{
degree += _root.speed;
// 换算成弧度
radian = degree*(Math.PI/180);
// 求出x, z'值
this._x = Math.cos(radian)*r+centerX;
z = Math.sin(radian)*r+this._parent.centerZ;
scale = d1/(d1+z);
this._y = y*scale+centerY;
this._xscale = scale*100;
this._yscale = scale*100;
this._alpha = scale*100;
////
//切换深度
if (scale>0.8) ...{
this.swapDepths(20);
this.enabled = true;
this.k.enabled = true;
} else ...{
this.swapDepths(this.defaultDep);
this.enabled = false;
this.k.enabled = false;
}
}
this.onMouseMove = function() ...{
y = (centerY-_root._ymouse)/3;
};
var radian:Number = 0;
// 圆心座标(x和z的中心点)
var centerX:Number = Stage.width/2-40;
var centerY:Number = Stage.height/2-20;
//
var r:Number = 100;
//半径值
var z:Number;
//z轴值(公式里的d2)
var d1:Number = 50;
//眼睛到屏幕的距离
var scale:Number;
//透视缩放比率
var y:Number;
//
var rotation:Number = 0;
//当前旋转的角度
function onEnterFrame() ...{
degree += _root.speed;
// 换算成弧度
radian = degree*(Math.PI/180);
// 求出x, z'值
this._x = Math.cos(radian)*r+centerX;
z = Math.sin(radian)*r+this._parent.centerZ;
scale = d1/(d1+z);
this._y = y*scale+centerY;
this._xscale = scale*100;
this._yscale = scale*100;
this._alpha = scale*100;
////
//切换深度
if (scale>0.8) ...{
this.swapDepths(20);
this.enabled = true;
this.k.enabled = true;
} else ...{
this.swapDepths(this.defaultDep);
this.enabled = false;
this.k.enabled = false;
}
}
this.onMouseMove = function() ...{
y = (centerY-_root._ymouse)/3;
};
4.在时间轴第一帧输入以下代码
var speed:Number = 4;
var center:Number = Stage.width/2;
var maxSpeed:Number = 6;
var unit:Number = center/maxSpeed;
//
var centerZ:Number = 90;
//
for (var i = 0; i<6; i++) ...{
this.attachMovie("text", "t"+i, i+10);
this["t"+i].degree = i*60;
this["t"+i].defaultDep = i+10;
this["t"+i]._y = Stage.height/2;
}
function onMouseMove() ...{
speed = Math.round((_xmouse-center)/unit)*-1;
}
var center:Number = Stage.width/2;
var maxSpeed:Number = 6;
var unit:Number = center/maxSpeed;
//
var centerZ:Number = 90;
//
for (var i = 0; i<6; i++) ...{
this.attachMovie("text", "t"+i, i+10);
this["t"+i].degree = i*60;
this["t"+i].defaultDep = i+10;
this["t"+i]._y = Stage.height/2;
}
function onMouseMove() ...{
speed = Math.round((_xmouse-center)/unit)*-1;
}
好了,测试一下吧!
- 让我们用Flash做3D动画
- Flash骨骼绑定做动画
- UIbutton 按钮做3D旋转动画 CATransform3DCAAnimation
- 你怎么做动画学习如何为3D动画的基础知识
- flash中的3D
- flash 3d
- Flash 3D
- flash 3d
- Flash 3D游戏
- flash 伪3D
- flash 3d示例
- Flash 3D 基础
- 让我们来聊聊Flash 11
- 让我们用cocos2d-x一起来做游戏吧!!(一)
- 3D角色动画
- 小车(3D动画)
- 3D动画种类
- 3D模型动画
- 在b/s开发中经常用到的javaScript技术
- 常用debian和ubuntu源
- Decode the Encypted Message
- 软件研发知识三分法
- Ubuntu软件
- 让我们用Flash做3D动画
- The Importance of Algorithms
- Hibernate底层技术简介 拦截方法
- 做百年老店之基础——责任。
- Java中的Abstract关键字
- .Net命名规范
- 字符串处理
- 分析
- 手机维修