html5教程单摆,Flash动画—单摆的制作教程

html5教程单摆,Flash动画—单摆的制作教程想起当初作这个动画时,真是不知如何下手,所以,这是一篇献给初学者的教程的单摆动画的制作,应该要解决两个方面的问题:一、单摆本身的制作,这一点只要用好flash的绘图工具即可二、单摆振动,这一点将是教程的重点也是难点下面就先解决第一个问题,制作单摆(这一步的制作注意注册点的选择)首先要弄清,单摆有三部分组成:摆线、摆球、悬挂点(天花板)(一)、摆线:1、选取工具区的线条工具,线条粗细默认,在主场景按…

大家好,又见面了,我是你们的朋友全栈君。

想起当初作这个动画时,真是不知如何下手,所以,这是一篇献给初学者的教程的单摆动画的制作,应该要解决两个方面的问题:

一、单摆本身的制作,这一点只要用好flash的绘图工具即可

二、单摆振动,这一点将是教程的重点也是难点

下面就先解决第一个问题,制作单摆(这一步的制作注意注册点的选择)首先要弄清,单摆有三部分组成:摆线、摆球、悬挂点(天花板)

(一)、摆线:

1、选取工具区的线条工具,线条粗细默认,在主场景按住Shifi键向下画一条适当长度的线段。

2、选中线段,右键—转化为元件-影片剪辑,其参数按图中设置,把它转化为影片剪辑

eda0d4efe05af91ecf805c120fc337b5.gif

(二)、摆球:

1、选取工具区的椭圆工具,按住Shifi键,在主场景画出一个圆,

2、打开主场景右边的选项栏,选择颜色-混色器,设置如图,

838f97b2879386e8253ec5bf8e9f42ab.gif

为摆球选择一种填充色(当然你也可以在左边的颜色选取区选择),选择工具选取区的油漆桶工具,为摆球填色

3、选中小球,右键—转化为元件-影片影剪辑,其参数按图中设置,把它转化为影片剪辑

eda0d4efe05af91ecf805c120fc337b5.gif

4、为它加点效果吧:选中小球,打开工作区下方的滤镜选项(flash8.0),加点投影效果,设置如图

60d30c93db39b34a4f19a0dd8c69a05c.gif

效果如图

40cf3ec369af6791f94e275aea4da984.gif

(三)悬挂点(天花板thb)

选取工具区的线条工具,线条粗细默认,在主场景按住Shifi键水平画一条适当长度的线段作为天花板,同样按住Shifi键画一条斜向的线段,利用复制、粘贴功能,作出许多斜线,组合成天花板的示意图,选中这些线段,右键—转化为元件-影片剪辑,其参数按图中设置,

9d591952b3c38f9e4d05c99783751e88.gif

把它转化为影片剪辑,效果如图,

8238c4f3e0696209ca206aff17a50085.gif

至此,基本的元件制作完成,接下来是组合单摆了:

1、删除主场景中的所有元件,在第一帧先拖人摆线,再拖人摆球(目的是让摆球在摆线上层),调整位置,并在其属性栏中分别命名为bq、bx,如图

acc2a5d233ca1d83ce77760be54f8adc.gif

2、同时选中摆线、摆球,右键—转化为元件-影片剪辑,其参数按图中设置,把它转化为影片剪辑,做成单摆,

7e711bb824b2082bf283c6dd2ea9e462.gif

再把天花板元件拖入,组成完整的单摆,效果如图

eda0d4efe05af91ecf805c120fc337b5.gif

单摆的制作到此结束(喝口水先)

接下来解决第二个问题,让单摆动起来

这里要用到物理的单摆周期公式  和振动方程x=Acos(ωt+α),但我们知道,单摆的振动实际是在一段圆弧上进行的,也就是说,在一段圆弧上运动同时其x要满足振动方程x=Acos(ωt+α),如何实现呢,先看一个图

ee3bc1a096d5c132e300f87dbb8f38a0.gif

物理学里有一个要求,那就是单摆摆动的圆心角不能太大,一般不超过10度,否则就不是简谐运动,据此,我们处理的时候干脆把圆弧(BDC)当作直线(BOC)处理,好,关键步骤来了,从图中可知,单摆摆过角度BAO时,水平方向的距离为BO,对应的角度b=arcsin(BO/AB),AB为摆长,x=BO,而这个就是单摆所要旋转的角度,好了,我们可以为单摆加代码了

1、把单摆所在的层命名为单摆吧

2、新加两层。一层命名按钮,用来放控制按钮,一层命名As,在As层加入代码

//初始化:a0为初相,A为振幅,g为重力加速度

a0 = 90;

t = 0;

A = 20;

g = 9.8;

//l为摆线的长度

l = db.bx._height;

//周期T为单摆的周期公式

T = 2*Math.PI*Math.sqrt(l/g);

//进入帧要执行的动作

this.onEnterFrame = function() {

//先作一个判断,如果m=1,再执行,这一步是为了控制他而作的

if (m == 1) {

//振动方程

x = A*Math.cos(2*Math.PI*t/T+a0);

//用反三角函数算出旋转的角度

b = Math.asin(x/l);

//每执行一次函数,t加0.5(经验值)

t += 0.5;

//把单摆旋转,由于反三角函数算出的是弧度,故把它转换为角度

db._rotation = b*180/Math.PI;

}

};

这样,测试时单摆肯定时不动的,因为m的值没有定义,我们必须在按钮层拖入两个按钮:窗口-公用库-按钮,自己选吧,在控制开始的按钮上加入代码

on (press) {

m = 1;

}

在控制停止的按钮上加入代码

on (press) {

m = 0;

}

大功基本构成,附上源文件

但实际上我们还希望能改变其摆长L,改变g,这时我们可以再作一个可移动的按钮,这里我不想罗嗦了,直接从库里拖一个出来就够了:窗口-公用库-按钮,自己找吧(我选的是fader – round按钮),把他们放在按钮层,这时这个按钮已在我们源文件的库中有了,选中它,点右键—直接复制,复制出另一个,也拖人按钮层,这时,我们就有了两个可以移动的按钮,用来改变L和g,由于我选的是fader – round按钮,它有一个标签,双击按钮,进入改变其标签名,结果如图

705055f6f17b9c5eff8d210be221ca03.gif

还没有完,因为他们都没有名字呢,选中L按钮,在属性栏命名为lk(控制L的意思),双击lk按钮,进入下一层,看其属性,你会发现滑块是有名字的,如我选的是fader – round按钮,滑块名为knob,改为lk0好了同理,选中g按钮,命名为gk(控制g的意思),双击gk按钮,进入下一层,选中滑块改为gk0,快了,别忘了,改你的代码哦

//初始化

a0 = 90;

t = 0;

A = 20;

m = 0;

db._rotation = 0;

this.onEnterFrame = function() {

//把控制按钮lk中的lk0按钮的y坐标+80作为摆长变化的百分比,由于lk0按钮的y坐标初时值是0,故加80,否则开始摆长就为0了

l = lk.lk0._y+80;

//把db中的bx电影剪辑在其y方向上伸缩L倍

db.bx._yscale = l;

//把摆线的长度赋值给h

h = db.bx._height;

//摆球的位置也相应变化,其位置应该在摆线的注册点往下+摆线的长度的地方

db.bq._y = h+db.bx._y;

//把控制按钮gk中的gk0按钮的y坐标+9.80作为g,由于gk0按钮的y坐标初时值是0,故加9.80,使其初始值为9.80,否则开始g就为0了

g = gk.gk0._y/10+9.8;

//单摆的周期公式

T = 2*Math.PI*Math.sqrt(l/g);

//如果m=1执行

if (m == 1) {

//振动方程

x = A*Math.cos(2*Math.PI*t/T+a0);

//用反三角函数算出位移为x对应旋转的角度

b = Math.asin(x/l);

//时间改变

t += 0.5;

//把单摆旋转b*180/Math.PI,原因是b是弧度制的,把它化成角度制

db._rotation = b*180/Math.PI;

}

};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131966.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ScheduledExecutorService

    ScheduledExecutorService任务调度(三)——Timer的替代品ScheduledExecutorService简介标签:任务调度TimerScheduledExecutorSer2015-08-0619:075704人阅读评论(2)收藏举报分类:【定时任务分时器】(3)作者同类文章X【java基础】(29)

  • 贴片铝电容识别及型号_2.贴片电容和贴片铝电解的封装材质型号大全

    贴片铝电容识别及型号_2.贴片电容和贴片铝电解的封装材质型号大全1.贴片电容的封装及容值表示多层片式陶瓷电容器(MLCC)贴片电容封装贴片电容由于制造时受“高温烧结”工艺限制,所以本体上不能标注其容量,一般都是在贴片生产的整盘上有标注。容量识别:104=10×10^4PF=100000PF=100NF=0.1UF471=47×10^1PF=470PF原则1:以PF为基本单位,1法拉(F)=1000毫法(mF)=1000000微法(μF)1微法(μF)=…

  • High Quality Monocular Depth Estimation via Transfer Learning论文学习

    High Quality Monocular Depth Estimation via Transfer Learning论文学习HighQualityMonocularDepthEstimationviaTransferLearning贡献方法网络结构复杂性和性能学习损失函数增强策略实验结果数据集实验细节评估质量评估定性结果AblationStudies深度编码深度解码颜色增强泛化到其他数据集结论代码实现arXiv:1812.11941v2[cs.CV]10Mar2019贡献三个方面。第一,…

  • docker容器和主机同网段_docker桥接模式下外网访问

    docker容器和主机同网段_docker桥接模式下外网访问首先我们需要了解的是:每个docker容器都是隔离的,所以它们之间是相互不同的!那么我们开始操作起来,让他们之间可以相互ping通网络。。。一、拉取镜像创建容器1.在这之前首先关闭防火墙;如果显示runinng则执行:sudosystemctlstopfirewalld2.在https://hub.docker.com里拉取镜像busybox(注:busybox相当于小型的c…

  • dede添加会员功能听语音

    dede添加会员功能听语音

  • springboot mysql事物_SpringBoot事务详细简介[通俗易懂]

    springboot mysql事物_SpringBoot事务详细简介[通俗易懂]重要概念自动提交模式对于mysql数据库,默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果执行失败则隐式的回滚事务。对于正常的事务管理,是一组相关的操作处于一个事务之中,因此必须关闭数据库的自动提交模式,下面是查看方式:查看是否自动提交命令(ON表示开启自动提交,值为1,OFF表示关闭自动提交,值为0):showvari…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号