电子商务网站建设方案书响应式网站模版下载

pingmian/2025/10/8 21:53:55/文章来源:
电子商务网站建设方案书,响应式网站模版下载,北京建筑公司一览表,宁波品牌网站建设服务电话翻译自 树动画示例 本章提供有关树动画示例的详细信息。您将了解场景中的所有元素是如何创建和动画的。 图4-1显示了带树的场景。 图4-1树动画 项目和要素 树动画项目由几个文件组成。每个元素#xff0c;如树叶#xff0c;草叶等#xff0c;都是在不同的类中创建的。在…翻译自  树动画示例 本章提供有关树动画示例的详细信息。您将了解场景中的所有元素是如何创建和动画的。 图4-1显示了带树的场景。 图4-1树动画 项目和要素 树动画项目由几个文件组成。每个元素如树叶草叶等都是在不同的类中创建的。在TreeGenerator类创建的所有元素的树。本Animator类包含了除驻留在草地动画所有动画GrassWindAnimation类。 示例中的场景包含以下元素 与分支叶子和花的树 草 每个元素都以自己的方式进行动画处理。一些动画并行运行其他动画按顺序运行。树木生长动画仅运行一次而季节变化动画设置为无限运行。 图4-2动画时间轴 季节变化动画包括以下部分 叶子和花朵出现在树上 花瓣落下并消失 叶子和草改变颜色 叶子落到地上消失 草 本节介绍草的创建和动画。 创造草 在树动画示例中如图4-3所示草由单独的草叶片组成每个草叶片都使用Path并添加到列表中。然后每个刀片弯曲并着色。算法用于随机化叶片的高度曲线和颜色并将叶片分布在“地面”上。您可以指定刀片的数量和草覆盖的“地面”的大小。 图4-3草 例4-1创建草刀片 public class Blade extends Path {public final Color SPRING_COLOR Color.color(random() * 0.5, random() * 0.5 0.5, 0.).darker();public final Color AUTUMN_COLOR Color.color(random() * 0.4 0.3, random()* 0.1 0.4, random() * 0.2);private final static double width 3;private double x RandomUtil.getRandom(170);private double y RandomUtil.getRandom(20) 20;private double h (50 * 1.5 - y / 2) * RandomUtil.getRandom(0.3);public SimpleDoubleProperty phase new SimpleDoubleProperty();public Blade() {getElements().add(new MoveTo(0, 0));final QuadCurveTo curve1;final QuadCurveTo curve2;getElements().add(curve1 new QuadCurveTo(-10, h, h / 4, h));getElements().add(curve2 new QuadCurveTo(-10, h, width, 0));setFill(AUTUMN_COLOR); //autumn color of bladesetStroke(null);getTransforms().addAll(Transform.translate(x, y));curve1.yProperty().bind(new DoubleBinding() {{super.bind(curve1.xProperty());}Overrideprotected double computeValue() {final double xx0 curve1.xProperty().get();return Math.sqrt(h * h - xx0 * xx0);}}); //path of top of blade is circle//code to bend bladecurve1.controlYProperty().bind(curve1.yProperty().add(-h / 4));curve2.controlYProperty().bind(curve1.yProperty().add(-h / 4));curve1.xProperty().bind(new DoubleBinding() {final double rand RandomUtil.getRandom(PI / 4);{super.bind(phase);}Overrideprotected double computeValue() {return (h / 4) ((cos(phase.get() (x 400.) * PI / 1600 rand) 1) / 2.) * (-3. / 4) * h;}});} } 为草运动创建时间轴动画 更改刀片顶部x坐标的时间轴动画用于创建草运动。 使用了几种算法使运动看起来很自然。例如每个叶片的顶部以圆形而不是直线移动并且叶片的侧面曲线使叶片看起来好像在风下弯曲。添加随机数以分离每个刀片运动。 例4-2草动画 class GrassWindAnimation extends Transition {final private Duration animationTime Duration.seconds(3);final private DoubleProperty phase new SimpleDoubleProperty(0);final private Timeline tl new Timeline(Animation.INDEFINITE);public GrassWindAnimation(ListBlade blades) {setCycleCount(Animation.INDEFINITE);setInterpolator(Interpolator.LINEAR);setCycleDuration(animationTime);for (Blade blade : blades) {blade.phase.bind(phase);}}Overrideprotected void interpolate(double frac) {phase.set(frac * 2 * PI);} } 树 本节介绍如何创建和动画图4-4中显示的树。 图4-4树 分行 树由树枝树叶和花组成。叶子和花朵画在树顶的树枝上。每个分支生成包括从父分支绘制的三个分支一个顶部分支和两个侧分支。您可以使用NUMBER_OF_BRANCH_GENERATIONSMain类中TreeGenerator的构造函数中传递的代码指定代数。例4-3显示了TreeGenerator类中的代码该代码创建了树的树干或根分支并为后续代添加了三个分支。 例4-3根分支 private ListBranch generateBranches(Branch parentBranch, int depth) {ListBranch branches new ArrayList();if (parentBranch null) { // add root branchbranches.add(new Branch());} else {if (parentBranch.length 10) {return Collections.emptyList();}branches.add(new Branch(parentBranch, Type.LEFT, depth));branches.add(new Branch(parentBranch, Type.RIGHT, depth));branches.add(new Branch(parentBranch, Type.TOP, depth));}return branches;} 为了使树看起来更自然每个子代生成分支以与父分支成一定角度生长并且每个子分支小于其父分支。子角度使用随机值计算。例4-4提供了用于创建子分支的代码。 例4-4子分支 public Branch(Branch parentBranch, Type type, int depth) {this();SimpleDoubleProperty locAngle new SimpleDoubleProperty(0);globalAngle.bind(locAngle.add(parentBranch.globalAngle.get()));double transY 0;switch (type) {case TOP:transY parentBranch.length;length parentBranch.length * 0.8;locAngle.set(getRandom(10));break;case LEFT:case RIGHT:transY parentBranch.length - getGaussianRandom(0,parentBranch.length, parentBranch.length / 10, parentBranch.length / 10);locAngle.set(getGaussianRandom(35, 10) * (Type.LEFT type ? 1 :-1));if ((0 globalAngle.get() || globalAngle.get() 180) depth 4) {length parentBranch.length * getGaussianRandom(0.3, 0.1);} else {length parentBranch.length * 0.6;}break;}setTranslateY(transY);getTransforms().add(new Rotate(locAngle.get(), 0, 0));globalH getTranslateY() * cos(PI / 2 - parentBranch.globalAngle.get() *PI / 180) parentBranch.globalH;setBranchStyle(depth);addChildToParent(parentBranch, this);} 叶子和花 叶子在顶部树枝上创建。因为叶子是与树的分支同时创建的所以叶子被缩放为0 leaf.setScaleX(0)并leaf.setScaleY(0)在树生长之前隐藏它们如例4-5所示。当它们落下时使用相同的技巧来隐藏树叶。为了营造更自然的外观树叶的绿色色调略有不同。此外叶子颜色根据叶子的位置而变化; 较深的色调应用于位于树冠中部下方的叶子。 例4-5叶形和放置 public class Leaf extends Ellipse {public final Color AUTUMN_COLOR;private final int N 5;private ListEllipse petals new ArrayList(2 * N 1);public Leaf(Branch parentBranch) {super(0, parentBranch.length / 2., 2, parentBranch.length / 2.);setScaleX(0);setScaleY(0);double rand random() * 0.5 0.3;AUTUMN_COLOR Color.color(random() * 0.1 0.8, rand, rand / 2);Color color new Color(random() * 0.5, random() * 0.5 0.5, 0, 1);if (parentBranch.globalH 400 random() 0.8) { //bottom leaf is darkercolor color.darker();}setFill(color);} } Flower在Flower类中创建然后添加到TreeGenerator类中树的顶部分支。您可以指定花朵中的花瓣数量。花瓣是分布在圆圈中的椭圆有些重叠。与草和叶子类似花瓣以不同深浅的粉红色着色。 动画树元素 本节介绍树动画示例中用于为树和季节更改设置动画的技术。并行转换用于启动场景中的所有动画如例4-6所示。 例4-6主要动画 final Transition all new ParallelTransition(new GrassWindAnimation(grass), treeWindAnimation, new SequentialTransition(branchGrowingAnimation, seasonsAnimation(tree, grass)));all.play(); 种树 树生长动画仅在树动画示例的开头运行一次。应用程序启动顺序转换动画以便一个接一个地生成分支如例4-7所示。最初长度设置为0.根分支大小和角度在TreeGenerator类中指定。目前每一代都在两秒钟内生长。 例4-7开始分支增长动画的顺序转换 SequentialTransition branchGrowingAnimation new SequentialTransition(); 例4-8中的代码创建了树增长动画 例4-8分支增长动画 private Animation animateBranchGrowing(ListBranch branchGeneration) {ParallelTransition sameDepthBranchAnimation new ParallelTransition();for (final Branch branch : branchGeneration) {Timeline branchGrowingAnimation new Timeline(new KeyFrame(duration,new KeyValue(branch.base.endYProperty(), branch.length)));PauseTransition pauseTransition new PauseTransition();pauseTransition.setOnFinished(t - branch.base.setStrokeWidth(branch.length / 25));sameDepthBranchAnimation.getChildren().add(new SequentialTransition(pauseTransition,branchGrowingAnimation));}return sameDepthBranchAnimation;} 因为所有分支线都是同时计算和创建的所以它们可以作为点出现在场景中。代码引入了一些技巧来隐藏线条之前的线条。在示例中代码duration.one millisecond暂停转换的时间不明显。在例4-9中base.setStrokeWidth(0)代码在每代生成动画动画之前将分支宽度设置为0。 例4-9树木生长动画优化 private void setBranchStyle(int depth) {base.setStroke(Color.color(0.4, 0.1, 0.1, 1));if (depth 5) { base.setStrokeLineJoin(StrokeLineJoin.ROUND);base.setStrokeLineCap(StrokeLineCap.ROUND);}base.setStrokeWidth(0); } } 创造树冠运动 在种植树的同时风动画开始了。树枝树叶和花朵在一起移动。 树风动画类似于草动画动画但它更简单因为只有树枝的角度改变。为了使树木运动看起来自然不同分支世代的弯曲角度是不同的。分支的生成越高分支越小弯曲的越多。例4-10提供了风动画的代码。 例4-10风动画 private Animation animateTreeWind(ListBranch branchGeneration, int depth) {ParallelTransition wind new ParallelTransition();for (final Branch brunch : branchGeneration) {final Rotate rotation new Rotate(0);brunch.getTransforms().add(rotation);Timeline windTimeline new Timeline(new KeyFrame(WIND_CYCLE_DURATION, new KeyValue(rotation.angleProperty(), depth * 2)));windTimeline.setAutoReverse(true);windTimeline.setCycleCount(Animation.INDEFINITE);wind.getChildren().add(windTimeline);}return wind; } 动画季节变化 季节变化动画实际上是在树长大后开始的并且无限运行。示例4-11中的代码调用所有季节动画 例4-11开始季节动画 private Transition seasonsAnimation(final Tree tree, final ListBlade grass) {Transition spring animateSpring(tree.leafage, grass);Transition flowers animateFlowers(tree.flowers);Transition autumn animateAutumn(tree.leafage, grass);SequentialTransition sequentialTransition new SequentialTransition(spring, flowers, autumn);return sequentialTransition;}private Transition animateSpring(ListLeaf leafage, ListBlade grass) {ParallelTransition springAnimation new ParallelTransition();for (final Blade blade : grass) { springAnimation.getChildren().add(new FillTransition(GRASS_BECOME_GREEN_DURATION, blade,(Color) blade.getFill(), blade.SPRING_COLOR));}for (Leaf leaf : leafage) {ScaleTransition leafageAppear new ScaleTransition(LEAF_APPEARING_DURATION, leaf);leafageAppear.setToX(1);leafageAppear.setToY(1);springAnimation.getChildren().add(leafageAppear);}return springAnimation;} 一旦所有树枝生长叶片开始按照例4-12中的指示出现。 示例4-12启动Spring动画和显示叶子的并行转换 private Transition animateSpring(ListLeaf leafage, ListBlade grass) {ParallelTransition springAnimation new ParallelTransition();for (final Blade blade : grass) {springAnimation.getChildren().add(new FillTransition(GRASS_BECOME_GREEN_DURATION, blade,(Color) blade.getFill(), blade.SPRING_COLOR));}for (Leaf leaf : leafage) {ScaleTransition leafageAppear new ScaleTransition(LEAF_APPEARING_DURATION, leaf);leafageAppear.setToX(1);leafageAppear.setToY(1);springAnimation.getChildren().add(leafageAppear);}return springAnimation;} 当所有叶子都可见时花开始出现如例4-13所示。顺序过渡用于逐渐显示花朵。花外观的延迟在例4-13的顺序转换代码中设定。花只出现在树冠上。 例4-13显示鲜花 private Transition animateFlowers(ListFlower flowers) {ParallelTransition flowersAppearAndFallDown new ParallelTransition();for (int i 0; i flowers.size(); i) {final Flower flower flowers.get(i);for (Ellipse pental : flower.getPetals()) {FadeTransition flowerAppear new FadeTransition(FLOWER_APPEARING_DURATION, petal);flowerAppear.setToValue(1);flowerAppear.setDelay(FLOWER_APPEARING_DURATION.divide(3).multiply(i 1));flowersAppearAndFallDown.getChildren().add(new SequentialTransition(new SequentialTransition(flowerAppear,fakeFallDownAnimation(petal))));}}return flowersAppearAndFallDown; } 一旦所有花朵出现在屏幕上它们的花瓣就会开始下降。在示例4-14的代码中鲜花被复制并且隐藏了第一组鲜花以便稍后显示。 例4-14复制花瓣 private Ellipse copyEllipse(Ellipse petalOld, Color color) {Ellipse ellipse new Ellipse();ellipse.setRadiusX(petalOld.getRadiusX());ellipse.setRadiusY(petalOld.getRadiusY());if (color null) {ellipse.setFill(petalOld.getFill());} else {ellipse.setFill(color);}ellipse.setRotate(petalOld.getRotate());ellipse.setOpacity(0);return ellipse;} 复制的花瓣开始逐一落到地上如例4-15所示。花瓣在地面上五秒后消失。花瓣的下落轨迹不是直线而是计算出的正弦曲线因此花瓣似乎在它们落下时旋转。 实施例4-15脱落花 Animation fakeLeafageDown fakeFallDownEllipseAnimation(leaf, leaf.AUTUMN_COLOR, node - {node.setScaleX(0);node.setScaleY(0); }); 当所有的花朵从场景中消失时下一季的变化就开始了。叶子和草变黄叶子落下并消失。实施例4-15中使用的相同算法使花瓣落下用于显示落叶。例4-16中的代码启用了秋季动画。 例4-16动画秋季变化的动画 private Transition animateAutumn(ListLeaf leafage, ListBlade grass) {ParallelTransition autumn new ParallelTransition();ParallelTransition yellowLeafage new ParallelTransition();ParallelTransition dissappearLeafage new ParallelTransition();for (final Leaf leaf : leafage) {final FillTransition toYellow new FillTransition(LEAF_BECOME_YELLOW_DURATION, leaf, null, leaf.AUTUMN_COLOR);Animation fakeLeafageDown fakeFallDownEllipseAnimation(leaf, leaf.AUTUMN_COLOR,node - {node.setScaleX(0);node.setScaleY(0);});dissappearLeafage.getChildren().add(fakeLeafageDown);}ParallelTransition grassBecomeYellowAnimation new ParallelTransition();for (final Blade blade : grass) {final FillTransition toYellow new FillTransition(GRASS_BECOME_YELLOW_DURATION, blade, (Color) blade.getFill(), blade.AUTUMN_COLOR);toYellow.setDelay(Duration.seconds(1 * random()));grassBecomeYellowAnimation.getChildren().add(toYellow);}autumn.getChildren().addAll(grassBecomeYellowAnimation, newSequentialTransition(yellowLeafage, dissappearLeafage));return autumn; } 在所有叶子从地面消失之后春天动画开始时将草绿色着色并显示叶子。 应用文件 NetBeans项目  tree_animation.zip

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设问题表seo关键词排名优化的方法

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例一 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出…

网站建设营销排名方案苏州微网站建设公司哪家好

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证方式一 curl方式二 bp抓包 说明内容漏洞编号CVE-2021-41773漏洞名称Apache HTTP 路径穿越漏洞漏…

建网站需要那些步骤网络联盟推广

CleanMyMac X是一款被广泛推荐的Mac电脑清理软件。以下是关于是否购买CleanMyMac X的几个关键点: 软件功能:CleanMyMac X具备多项功能,包括但不限于系统垃圾清理、缓存清理、恶意软件移除、隐私保护等。这些功能有助于保持Mac电脑的清洁和性能…

网站建设app开发公司手机表格制作软件

在计算机使用过程中,经常会遇到“msvcp120.dll丢失”的错误提示。这个错误提示通常出现在运行某些程序或游戏时,造成相关应用程序可能无法正常启动或运行。那么,究竟是什么原因导致了msvcp120.dll文件的丢失呢?本文将详细解析msvc…

南京网站制作公司网站 目录结构

#可以使用prefix参数,将abc.rpm包安装到/usr/bin目录下 rpm -i –prefix/usr/bin abc.rpm

怎样建设美食网站绵阳做网站多少钱

RESTFul规范RESTFul是一种HTTP API接口规范,只要满足的RESTFul规范,即可称为RESTFul API。既然是接口,我们先来了解一下,他和传统的API接口有何不同吧。本文以尽量简单明了的文字来介绍、描述,只讲核心内容&#xff0c…

汽车手机网站制作wordpress 登录hanshu

目录 一.数组下标越界简介 1、什么是数组访问越界?2、访问越界会出现什么结果? 二.数组下标越界案例三.防止数组下标越界方法四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.数组下标越界简介 1、什么是数组访问越界…

镇江网站建设优化没有公司可以做网站吗

第1章 概述 1.1 适用范围 本配置标准的使用者包括:服务器系统管理员、应用管理员、网络安全管理员。 1.2 适用版本 LINUX系列服务器; 第2章 账号管理、认证授权 2.1 账号 2.1.1 用户口令设置 安全基线项目名称 操作系统Linux用户口令安全基…

搭建织梦网站教程优惠劵精选网站怎么做

周赛题目 三角形类型 II 给你一个下标从0开始长度为3的整数数组nums,需要用它们来构造三角形。 如果一个三角形的所有边长度相等,那么这个三角形称为equilateral。 如果一个三角形恰好有两条边长度相等,那么这个三角形称为isosceles。 如…

写字就能赚钱做网站wordpress免费插件下载地址

本文内容 先决条件为什么要实现弱事件模式?应该由谁实现弱事件模式?如何实现弱事件模式 在应用程序中,附加到事件源的处理程序可能不会与将处理程序附加到源的侦听器对象一同销毁。 这种情况下会导致内存泄漏。 Windows Presentation Found…

建设工业网站php网站开发设计系统

1 基本框架 ①:文字变成向量 ②:喂入噪声文字encoder,产生中间产物 ③:decoder 还原图片 2 text encoder 这张图越往右下表示效果越好,可以看到text encoder尺寸越大,对后续生成图片的增益越多 3 评价图…

网站开发过程阶段外贸网站contact

PID(progress ID 进程ID) 上图为占用情况,使用下面的指令都不管用 kill -9 PID kill -15 PID # 加入sudo 还是不行 # 等等网上的 chatgpt 提供的其他办法,一圈试了下来还是不管用最后解决办法 首先用下面的指令查看进程的树结构…

建筑材料价格查询网站网页设计与制作txt

随着ChatGPT这一先进的自然语言处理模型的出现,教学、学习、测评和辅导的传统方式正在面临可能的重塑。她是否会影响中文教育的未来方向,甚至取代中文教师的角色,成为了许多人热议的话题。本文旨在探讨ChatGPT与中文测评之间的联系&#xff0…

网站开辟两学一做专栏砀山做网站的公司

设计 MySQL 的大叔依据一些规则,竭尽全力的把一些很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以被称作 查询重写 (就是人家觉得你写的语句不好,自己再重写一遍)。 1.条件化简 我们编写的查询语句的搜…

网站建设的主题什么比较好网站开发工程师面试试题

MySQL升级版本 5.7.43 必须升级驱动版本 8.0 以上版本 启动项目报错 使用Druid数据库连接池获取Mysql常见的错误--不兼容问题 后来百度搜索发现原来是Mysql版本和mysql-connector-java版本不一致造成的。 查询Mysql版本号: SELECT version(); 然后去官网找对应版…

10分钟快速建网站新站如何快速收录

微软网络近期遭黑客入侵,高管电子邮件被监视长达两个月。 一位研究员表示,黑客通过获取一个拥有管理员权限的老旧测试帐号的访问权限来实施入侵,这是微软犯下的重大失误。 微软在1月25日(上周四)发布第二篇公告&…

做邮轮的网站文章代写

1. AI Santa by Tavus 标语:随时随地,视频连线圣诞老人! 介绍:准备好迎接AI圣诞老人了吗?塔武斯公司推出的这款神奇的节日体验,能让你实时用30多种语言与圣诞老人对话,看看自己今年是乖孩子还…

为什么要建设营销型网站智能建造的发展趋势

前言: 目前开发需要用到电脑直接连接外卖小票机打印小票,查阅各种资料,使用 6612345浏览器 终于解决了这个问题。 效果: PHP、js直接连接小票机并且自动出票。 支持的小票机: 目前测试可以的有:电脑A4打印…

专业网站制作哪专业建筑涂料网站设计

1.效果图艺术与规划说他想与我合作在全国率先主角光环加,椭圆形走动。cocos2d自带没有,參考网上的写了一个。2.椭圆数学知识有关椭圆的数学知识我已经忘光了。网上找了点资料:a是椭圆的长半轴,b是椭圆的短半轴。o是角度&#xff0…

襄阳网站制作公司有哪些lisp 网站开发

L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你…