查看: 2063|回复: 9
|
[转贴]弹簧效果
[复制链接]
|
|
作者:Super-Tomato
上次转贴了一些物理的公式,在这里就应用一下作了个小球弹簧的效果,希望让大家有点启发
效果:
Flash: http://www.flash8.net/bbs/UploadFile/2005-1/2005127192823279.swf
步骤1:
在场景上画个圆,然后选择圆按F8,转换成Movieclip。注册点(Register point)选择中间
步骤2:
在圆形movieclip属性面板上加上instance name为ball
步骤3:
在场景第一个frame输入以下代码
//在2004版本需要先定义变量,当中包括了球的半径,摩擦力,重力,弹簧力,弹簧床的宽度高度等
width = ball._width/2+1;
v = 0;
grav = 2;
damp = 0.98;
k = 0.2;
left = 0;
right = 400;
top = 200;
bottom = 350;
out = false;
//当球按下时可拖动范围和out变量为false阻止球体计算球体下坠
ball.onPress = function() {
out = true;
startDrag(this, true, left+width, 0+width, right-width, bottom-width);
};
//当球放开的时候停止拖动动作和开始计算球体下坠的动作
ball.onRelease = function() {
out = false;
v = 0;
this.stopDrag();
};
//画出球体压着弹簧床时的图形
MovieClip.prototype.drawline = function(x, y) {
x1 = x-_root.width;
x2 = x+_root.width;
with (this._parent) {
clear();
beginFill(0x123456);
lineStyle(1);
moveTo(left, top);
curveTo(x1, top, x1, y);
lineTo(x2, y);
curveTo(x2, top, right, top);
lineTo(right, 350);
lineTo(left, 350);
lineTo(left, top);
endFill();
}
updateAfterEvent();
};
//球体离开弹簧床的时候还原床形
MovieClip.prototype.drawline_0 = function() {
with (this._parent) {
clear();
beginFill(0x123456);
lineStyle(1);
moveTo(left, top);
lineTo(right, top);
lineTo(right, 350);
lineTo(left, 350);
lineTo(left, top);
}
updateAfterEvent();
};
//定义两个空mc以画出弹簧床
_root.createEmptyMovieClip("line", 0);
_root.createEmptyMovieClip("line1", 1);
//当flash开始播放时的事件
_root.onEnterFrame = function() {
if (!out) { //当滑鼠没有拖动球体的时候,计算出球体下坠的位置(包括地心吸力)
v += grav;
v *= damp;
ball._y += v;
}
if (ball._y>top) { //当球的位置在弹簧床上的时候
v += (ball._y-top)*-1*k;
line.drawline(ball._x, ball._y);
} else { //当球的位置离开弹簧床的时候
line1.drawline_0();
}
};
当你熟悉了这些编写方法和物力计算之后,就可以加上角度的效果
Flash: http://www.flash8.net/bbs/UploadFile/2005-2/200521162326214.swf
[ Last edited by hahabin on 11-2-2005 at 02:29 AM ] |
|
|
|
|
|
|
|
发表于 11-2-2005 12:29 AM
|
显示全部楼层
谢谢你教我这一个新的script
可是你没有告诉角度的效果
的as |
|
|
|
|
|
|
|
楼主 |
发表于 11-2-2005 08:26 AM
|
显示全部楼层
我没加上角度的代码,主要是让新手能够简洁的看懂代码。当你能够掌握好以上代码之后就知道怎么使用Math.cos,atan2和物力公式代入。如果你觉得有必要的话,我有空才贴上角度计算的代码吧 |
|
|
|
|
|
|
|
发表于 11-2-2005 04:06 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 18-2-2005 09:56 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 19-2-2005 08:54 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-8-2006 07:23 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2006 07:50 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-8-2006 09:42 AM
|
显示全部楼层
原帖由 super-tomato 于 2-8-2006 07:50 AM 发表
自己看看是否把代碼帖錯地方或步驟沒做好
是场景的第一个frame对吗?
我是copy n paste的
ctrl enter的时候也没有出现error |
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2006 07:23 PM
|
显示全部楼层
原帖由 venus_huihui 于 2-8-2006 09:42 AM 发表
是场景的第一个frame对吗?
我是copy n paste的
ctrl enter的时候也没有出现error
上傳你的文件 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|