一些常用物理公式和AS3的结合应用(转的)
2010-04-18 09:46
344 查看
一些常用物理公式和AS3的结合应用(转的)
// 用要旋转到的 x, y 坐标替换 mouseX, mouseY2.dx = mouseX - sprite.x;
3.dy = mouseY - sprite.y;
4.sprite.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
创建波形:
1.// 将 x, y 或其它属性赋值给 Sprite 影片或影片剪辑,
2.// 作为绘图坐标,等等。
3.public function onEnterFrame(event:Event){
4.value = center + Math.sin(angle) * range;
5.angle += speed;
6.}
创建圆形:
1.// 将 x, y 或其它属性赋值给 Sprite 影片或影片剪辑,
2.// 作为绘图坐标,等等。
3.public function onEnterFrame(event:Event){
4.xposition = centerX + Math.cos(angle) * radius;
5.yposition = centerY + Math.sin(angle) * radius;
6.angle += speed;
7.}
创建椭圆:1.// 将 x, y 或其它属性赋值给 Sprite 影片或影片剪辑,
2.// 作为绘图坐标,等等。
3.public function onEnterFrame(event:Event){
4.xposition = centerX + Math.cos(angle) * radiusX;
5.yposition = centerY + Math.sin(angle) * radiusY;
6.angle += speed;
7.}
获得两点间的距离:
1.// x1, y1 和 x2, y2 是两个点
2.// 也可以是 Sprite / MovieClip 坐标,鼠标坐标,等等。
3.dx = x2 – x1;
4.dy = y2 – y1;
5.dist = Math.sqrt(dx*dx + dy*dy);
颜色组合:
1.color24 = red < < 16 | green << 8 | blue;
2.color32 = alpha << 24 | red << 16 | green << 8 | blue;
颜色提取:
1.red = color24 >> 16;
2.green = color24 >> 8 & 0xFF;
3.blue = color24 & 0xFF;
4.alpha = color32 >> 24;
5.red = color32 >> 16 & 0xFF;
6.green = color32 >> 8 & 0xFF;
7.blue = color232 & 0xFF;
穿过某点绘制曲线:
1.// xt, yt 是我们想要穿过的一点
2.// x0, y0 以及 x2, y2 是曲线的两端
3.x1 = xt * 2 – (x0 + x2) / 2;
4.y1 = yt * 2 – (y0 + y2) / 2;
5.moveTo(x0, y0);
6.curveTo(x1, y1, x2, y2);
角速度转换为 x, y 速度:
1.vx = speed * Math.cos(angle);
2.vy = speed * Math.sin(angle);
角加速度(作用于物体上的 force)转换为 x, y 加速度:
1.ax = force * Math.cos(angle);
2.ay = force * Math.sin(angle);
将加速度加入速度:
1.vx += ax;
2.vy += ay;
移除出界对象:
1.if(sprite.x - sprite.width / 2 > right ||
2.sprite.x + sprite.width / 2 < left ||
3.sprite.y – sprite.height / 2 > bottom ||
4.sprite.y + sprite.height / 2 < top){
5.// 删除影片的代码
6.}
重置出界对象:
1.if(sprite.x - sprite.width / 2 > right ||
2.sprite.x + sprite.width / 2 < left ||
3.sprite.y – sprite.height / 2 > bottom ||
4.sprite.y + sprite.height / 2 < top){
5.// 重置影片的位置和速度
6.}
屏幕环绕出界对象:
01.if(sprite.x - sprite.width / 2 > right){
02.sprite.x = left - sprite.width / 2;
03.}else if(sprite.x + sprite.width / 2 < left){
04.sprite.x = right + sprite.width / 2;
05.}if(sprite.y – sprite.height / 2 > bottom){
06.sprite.y = top – sprite.height / 2;
07.}else if(sprite.y + sprite.height / 2 < top){
08.sprite.y = bottom + sprite.height / 2;
09.}
摩擦力应用(正确方法):
01.speed = Math.sqrt(vx * vx + vy * vy);
02.angle = Math.atan2(vy, vx);
03.if(speed > friction){
04.speed -= friction;
05.}else{
06.speed = 0;
07.}
08.vx = Math.cos(angle) * speed;
09.vy = Math.sin(angle) * speed;
摩擦力应用(简便方法):
1.vx *= friction;
2.vy *= friction;
简单缓动运动:
01.//长形
02.var dx:Number = targetX - sprite.x;
03.var dy:Number = targetY - sprite.y;
04.vx = dx * easing;
05.vy = dy * easing;
06.sprite.x += vx;
07.sprite.y += vy;
08.//中形:
09.vx = (targetX - sprite.x) * easing;
10.vy = (targetY - sprite.y) * easing;
11.sprite.x += vx;
12.sprite.y += vy;
13.//短形:
14.sprite.x += (targetX - sprite.x) * easing;
15.sprite.y += (targetY - sprite.y) * easing;
简单弹性运动:
01.//长形
02.var ax:Number = (targetX - sprite.x) * spring;
03.var ay:Number = (targetY - sprite.y) * spring;
04.vx += ax;
05.vy += ay;
06.vx *= friction;
07.vy *= friction;
08.sprite.x += vx;
09.sprite.y += vy;
10.//中形:
11.vx += (targetX - sprite.x) * spring;
12.vy += (targetY - sprite.y) * spring;
13.vx *= friction;
14.vy *= friction;
15.sprite.x += vx;
16.sprite.y += vy;
17.//短形:
18.vx += (targetX - sprite.x) * spring;
19.vy += (targetY - sprite.y) * spring;
20.sprite.x += (vx *= friction);
21.sprite.y += (vy *= friction);
偏移弹性运动:
1.var dx:Number = sprite.x - fixedX;
2.var dy:Number = sprite.y - fixedY;
3.var angle:Number = Math.atan2(dy, dx);
4.var targetX:Number = fixedX + Math.cos(angle) * springLength;
5.var targetY:Number = fixedX + Math.sin(angle) * springLength;
6.// 如前例弹性运动到 targetX, targetY
距离碰撞检测:
01.// 从影片 spriteA 和 spriteB 开始
02.// 如果使用一个空白影片,或影片没有半径(radius)属性
03.// 可以用宽度或高度除以 2。
04.var dx:Number = spriteB.x - spriteA.x;
05.var dy:Number = spriteB.y - spriteA.y;
06.var dist:Number = Math.sqrt(dx * dx + dy * dy);
07.if(dist < spriteA.radius + spriteB.radius){
08.// 处理碰撞
09.}
多物体碰撞检测:
01.var numObjects:uint = 10;
02.for(var i:uint = 0; i < numObjects - 1; i++){
03.// 使用变量 i 提取引用
04.var objectA = objects;
05.for(var j:uint = i+1; j{
06.// // 使用变量 j 提取引用
07.var objectB = objects[j];
08.// perform collision detection
09.// between objectA and objectB
10.}
11.}
坐标旋转:
1.x1 = Math.cos(angle) * x - Math.sin(angle) * y;
2.y1 = Math.cos(angle) * y + Math.sin(angle) * x;
反坐标旋转:
1.x1 = Math.cos(angle) * x + Math.sin(angle) * y;
2.y1 = Math.cos(angle) * y - Math.sin(angle) * x;
动量守恒的 ActionScript 表达式,短形:
1.var vxTotal:Number = vx0 - vx1;
2.vx0 = ((ball0.mass - ball1.mass) * vx0 + 2 * ball1.mass * vx1) /
3.(ball0.mass + ball1.mass);
4.vx1 = vxTotal + vx0;
万有引力:
01.function gravitate(partA:Ball, partB:Ball):void{
02.var dx:Number = partB.x - partA.x;
03.var dy:Number = partB.y - partA.y;
04.var distSQ:Number = dx * dx + dy * dy;
05.var dist:Number = Math.sqrt(distSQ);
06.var force:Number = partA.mass * partB.mass / distSQ;
07.var ax:Number = force * dx / dist;
08.var ay:Number = force * dy / dist;
09.partA.vx += ax / partA.mass;
10.partA.vy += ay / partA.mass;
11.partB.vx -= ax / partB.mass;
12.partB.vy -= ay / partB.mass;
13.}
余弦定理:
1.A = Math.acos((b * b + c * c - a * a) / (2 * b * c));
2.B = Math.acos((a * a + c * c - b * b) / (2 * a * c));
3.C = Math.acos((a * a + b * b - c * c) / (2 * a * b));
基本透视法:
1.scale = fl / (fl + zpos);
2.sprite.scaleX = sprite.scaleY = scale;
3.sprite.alpha = scale; // 可选
4.sprite.x = vanishingPointX + xpos * scale;
5.sprite.y = vanishingPointY + ypos * scale;
Z 排序:
1.// 假设有一个带有 zpos 属性的 3D 物体的数组
2.objectArray.sortOn("zpos", Array.DESCENDING | Array.NUMERIC);
3.for(var i:uint = 0; i < numObjects; i++){
4.setChildIndex(objectArray, i);
5.}
坐标旋转:
1.x1 = cos(angleZ) * xpos - sin(angleZ) * ypos;
2.y1 = cos(angleZ) * ypos + sin(angleZ) * xpos;
3.x1 = cos(angleY) * xpos - sin(angleY) * zpos;
4.z1 = cos(angleY) * zpos + sin(angleY) * xpos;
5.y1 = cos(angleX) * ypos - sin(angleX) * zpos;
6.z1 = cos(angleX) * zpos + sin(angleX) * ypos;
3D 距离
1.dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
相关文章推荐
- [Flex]转来的 Flex 一些常用物理公式和as3的结合应用
- 些常用物理公式和AS3的结合应用
- 收集整理了一些AS3中常用到的公式
- 一些基本的几何、物理公式;写as3时常能用到,分享
- 收集整理了一些AS3中常用到的公式
- 一些AS3中常用到的公式
- IOS应用开发常用的一些控件
- 如何应用性能测试常用计算公式
- 关于Hadoop结合RDBMS应用的一些思考
- AS3中常用公式
- js一些常用的功能的应用
- javascript 常用的一些事件和应用
- 『归档』 初始化Linux一些主要应用的常用配置
- 论文中常用的一些矩阵求导公式和二阶范数公式
- htc 的应用--htc解释:运用css+javascript方便的实现一些控件的特效+结合asp.net 2.0的应用
- 几何公式和定理(初中)一些常用数学公式
- AS3中常用到的公式(转)
- AS3动画效果公式,常用处理公式代码,基本运动公式,三角公式
- 公布一些常用的WebServices,希望对大家的应用有帮助~
- AS3动画效果常用公式