当前位置: 首页 > 编程日记 > 正文

Win10系列:JavaScript动画2

"重新定位"动画也是Windows动画库中的动画效果。"重新定位"动画的动画效果是指一个或一组元素移动到新的位置时,这些元素不是突然出现在新的位置,而是从一个位置移动到另一个位置。

创建"重新定位"动画可以使用WinJS.UI.Animation.createRepositionAnimation函数,该函数有一个Object类型的参数,表示将要移动的元素对象或元素对象数组。下面以一个应用程序为例,来演示如何使用HTML5和JavaScript实现"重新定位"动画。在这个应用程序运行后,初始界面显示三个彩色的正方形,单击应用程序界面上的"移动"按钮后,三个彩色的正方形将依次移动到一个新的位置。

新建一个JavaScript的Windows应用商店的空白应用程序项目,将其命名为RepositionAnimation。打开default.html文件,在body元素中添加一个"移动"按钮和一个div元素。"移动"按钮用于控制三个彩色正方形的移动,id属性值设置为"runAnimationButton";在div元素内部添加四个div元素,四个元素中,第一个div元素用于调节另外三个div的位置,通过改变第一个div元素的宽度可以改变它后面的三个div元素的位置,设置四个元素中的第一个元素id属性值为"spacingDiv",剩余的三个div元素分别用于显示三个彩色的正方形,设置它们的id属性值分别为"leftAreaDiv"、"middleAreaDiv"和"rightAreaDiv",同时为这三个元素的class属性赋值"boxStyle"。相应的HTML代码片段如下所示:

<body>

<button id="runAnimationButton">移动</button>

<div id="outputDiv">

<div id="spacingDiv"></div>

<div id="leftAreaDiv" class="boxStyle"></div>

<div id="middleAreaDiv" class="boxStyle"></div>

<div id="rightAreaDiv" class="boxStyle"></div>

</div>

</body>

为了控制应用程序界面的显示外观,在default.css文件中添加如下代码来控制default.html页面的布局。

/*设置body元素的边距*/

body {

margin-left:300px;

margin-top:250px;

}

/*设置id属性值为boxStyle的元素的大小、背景色等*/

.boxStyle {

width: 100px;

height: 100px;

float:left;

background-color: #00B6FF;

margin: 5px;

}

/*设置id属性值为spacingDiv的元素的大小、对齐方式等*/

#spacingDiv {

width: 0px;

height: 100px;

float: left;

}

/*设置id属性值为runAnimationButton的元素的边距*/

#runAnimationButton {

margin-left:120px;

}

完成前台界面的布局后,应用程序界面效果如图19-25所示。

图19-25 "重新定位"动画初始界面

布局好前台界面后,接下来介绍如何实现"重新定位"动画。打开default.js文件,在"args.setPromise(WinJS.UI.processAll());"语句后添加如下代码,为"移动"按钮注册click事件的处理函数runAnimationButton_Click。

runAnimationButton.addEventListener("click", runAnimationButton_Click);

spacingDiv.style.width = "0px";

在上面的代码中,调用id属性值为"runAnimationButton"的元素对象的addEventListener函数为相应元素注册click事件处理函数,函数名为runAnimationButton_Click。接着为spacingDiv.style对象中的width属性赋值0px,设置id属性值为"spacingDiv"的元素初始宽度为0px。

下面在"app.onactivated = function (args) {......};"语句的后面添加代码,定义事件处理函数runAnimationButton_Click,实现三个彩色正方形移动的动画效果。

function runAnimationButton_Click() {

var spaceDivWidth;

var elements;

//判断id属性值为spacingDiv的元素的宽度是否为0像素

if (spacingDiv.style.width === "0px") {

//idrightAreaDivmiddleAreaDivleftAreaDiv的三个元素依次保存在一个数组中,并将数组赋值给elements变量

elements = [rightAreaDiv, middleAreaDiv, leftAreaDiv];

spaceDivWidth = "500px";

} else {

elements = [leftAreaDiv, middleAreaDiv, rightAreaDiv];

//设置变量spaceDivWidth的值

spaceDivWidth = "0px";

}

//调用WinJS.UI.Animation.createRepositionAnimation函数获得一个对象reposition

var repositionAnimation = WinJS.UI.Animation.createRepositionAnimation(elements);

//通过更改id属性为spacingDiv的元素的宽度改变其后的三个彩色正方形的位置

spacingDiv.style.width = spaceDivWidth;

//调用reposition对象的execute函数显示动画

repositionAnimation.execute();

}

在上面的代码中,首先定义了两个变量spaceDivWidth和elements,其中spaceDivWidth用于保存一个像素值,elements用于保存要移动的元素对象。接着判断id属性值为"spacingDiv"的元素的宽度是否为0像素,即判断三个彩色正方形左边的div元素宽度是否为0像素,如果为0像素就将id属性值分别为"rightAreaDiv"、"middleAreaDiv"和"leftAreaDiv"的三个元素以数组形式赋值给变量elements,并设置变量spaceDivWidth的值为500px,如果三个彩色正方形左边的div元素宽度不为0像素则将id属性值分别为"leftAreaDiv"、"middleAreaDiv"、"rightAreaDiv"的三个元素以数组形式赋值给变量elements,并设置变量spaceDivWidth值为0px。然后以elements为参数调用WinJS.UI.Animation.createRepositionAnimation函数获得一个对象reposition,将id属性为"spacingDiv"的元素的宽度设置为变量spaceDivWidth,最后调用reposition对象的execute函数显示"重新定位"动画。

启动调试,应用程序的初始界面如图19-25所示,单击"移动"按钮,界面上的三个彩色正方形将在水平位置向右移动一段距离,移动过程中可以看到彩色正方形移动的动画效果,移动后的界面如图19-26所示。

图19-26 "重新定位"动画显示后的界面

相关文章:

[转载]李开复先生给中国学生的第四封信:大学四年应是这样度过

今天&#xff0c;我回复了“开复学生网”开通以来的第1000个问题。关掉电脑后&#xff0c;始终有一封学生来信萦绕在我的脑海里&#xff0c;挥之不去&#xff1a; 开复老师&#xff1a; 就要毕业了。 回头看自己所谓的大学生活&#xff0c; 我想哭&#xff0c;不是因为离别&…

算法基础知识科普:8大搜索算法之插补搜索

二分法的不足在于&#xff0c;对于均匀分布的数据&#xff0c;缩小搜索范围的速度太慢&#xff0c;每次只能缩小原长度的1/2&#xff0c;我们希望缩小范围尽可能的快&#xff0c;即搜索的数据若离左端点近&#xff0c;搜索的区间尽量的靠近左端点&#xff0c;同理搜索的数据若离…

hdu(1596)

为什么80%的码农都做不了架构师&#xff1f;>>> dijkstra 1 #include " iostream " 2 using namespace std; 3 double map[ 1010 ][ 1010 ]; 4 int visit[ 1010 ]; 5 double used[ 1010 ]; 6 int k; 7 double _max 0 ; 8 int i…

使用ADO.NET 的最佳实践(zz)

数据访问&#xff1a;使用 ADO.NET 的最佳实践&#xff08;ADO.NET 技术文档&#xff09; 发布日期&#xff1a; 4/1/2004| 更新日期&#xff1a; 4/1/2004 摘要&#xff1a;编写 Microsoft ADO.NET 代码的最佳实践&#xff0c;以及对使用 ADO.NET 中可用对象的开发人员的建议。…

算法基础知识科普:8大搜索算法之二叉搜索树(上)

前几天&#xff0c;我们介绍了在顺序存储结构上构建的搜索算法&#xff0c;如二分搜素&#xff0c;插补搜索等&#xff0c;这种结构适合于静态搜索&#xff0c;但对于动态搜索会涉及到大量记录的移动导致效率的降低。这样我们自然会想是否能够利用链式的存储结构&#xff0c;这…

如何查看 oracle 官方文档

Concept 包含了 oracle 数据库里面的一些基本概念和原理, 比如 数据库逻辑结构, 物理结构, 实例结构, 优化器, 事务等. PDF 460页 Reference 包含了动态性能视图, 数据字典, 初始化参数等, 如果有参数不知道意思, 或者 v$视图字段信息模糊, 都可以从这里找到描述, 使用 html版的…

php开发面试题---攻击网站的常用手段有哪些,及如何预防(整理)

php开发面试题---攻击网站的常用手段有哪些&#xff0c;及如何预防&#xff08;整理&#xff09; 一、总结 一句话总结&#xff1a; 比较记忆&#xff1a;注意比较各种攻击的区别&#xff0c;比如csrf和xss&#xff0c;以及xss和sql&#xff0c;这样才能记住 1、Sql注入是什么&…

利用Event和MapFile进程共享信息

工作过程: 进程一, 建立映射文件,填写数据,并发出Event的信号; 进程二,打开映射文件,收到Event的信号时读取数据. #include <windows.h>#include <string.h>#include <iostream>usingnamespacestd; #defineFILE_SIZE 1024staticHANDLE hMapFile; staticLPVOI…

算法基础知识科普:8大搜索算法之二叉搜索树(中)

昨天图文介绍了二叉搜索树的基本概念&#xff0c;本篇图文介绍二叉搜索树的具体实现。既然二叉搜索树是二叉树的特殊应用&#xff0c;所以我们首先封装二叉树的结点&#xff0c;即数据-左子树-右子树&#xff0c;然后实现ISymbolTalbe接口中的方法&#xff0c;我们知道二叉搜索…

PropertiesFactoryBean PropertyPlaceholderConfigurer 区别

为什么80%的码农都做不了架构师&#xff1f;>>> 1.PropertiesFactoryBean is a FactoryBean implementation which reads a properties file and exposes that as an Properties object in the applicationcontext. 加载配置文件后&#xff0c;可以在代码中通过注…

MySQL索引背后的数据结构及算法原理【转】

http://blog.codinglabs.org/articles/theory-of-mysql-index.htmlMySQL索引背后的数据结构及算法原理【转】摘要本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引…

各种播放器代码

各种播放器代码1.avi格式代码片断如下&#xff1a;<object id"video"width"400"height"200"border"0"classid"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"><param name"ShowDisplay"value"0"…

算法基础知识科普:8大搜索算法之二叉搜索树(下)

由于微信发代码以及数学符号很吃力&#xff0c;所以我们做知识科普只能利用图片来做&#xff0c;本算法代码较多&#xff0c;所以分为三个部分来介绍。本篇把剩余的部分补齐。当然二叉搜索树也有自己的缺陷&#xff0c;即构造的二叉树跟数据的初始状态以及删除的方法有很大的关…

SpringMvc4中获取request、response对象的方法

springMVC4中获取request和response对象有以下两种简单易用的方法&#xff1a; 1、在control层获取 在control层中获取HttpServletRequest和HttpServletResponse对象有以下两种简单方式&#xff1a; 1&#xff09;通过方法参数直接在action类中获取 Controller class Action{ R…

JAVA增删改查XML文件

2019独角兽企业重金招聘Python工程师标准>>> 最近总是需要进行xml的相关操作。 不免的要进行xml的读取修改等&#xff0c;于是上网搜索&#xff0c;加上自己的小改动&#xff0c;整合了下xml的常用操作。 读取XML配置文件 首先我们需要通过DocumentBuilderFactory获…

测试一下,你能小学毕业吗?

昨天在群里大家讨论了上面那道小学六年级的五星题&#xff0c;不知道有没有同学能够不用三角函数&#xff0c;不用积分做出来的&#xff1f;先别往后看&#xff0c;测试一下吧&#xff01;看看是不是要跟小编一起重新背起小书包返回小学&#xff0c;重新学习了。 现在小学生的…

This is A PostXing Test

Test 一下下 试看看~~~ ABC试一下代码...1 public class PostApplicationExitActivationProcess2 {3 /// <summary>4 /// The main entry point for the application.5 /// </summary>6 [STAThread]7 static void Main( string[] args) 8 {9 if (…

缓存穿透、并发和失效的解决方案

我们在用缓存的时候&#xff0c;不管是Redis或者Memcached&#xff0c;基本上会通用遇到以下三个问题&#xff1a; 缓存穿透 缓存并发 缓存失效 缓存穿透 注&#xff1a;上面三个图会有什么问题呢&#xff1f; 我们在项目中使用缓存通常都是先检查缓存中是否存在&#xff0c;…

CentOS 7 命令

Centos 7 目录说明 / / 是根目录。 /bin 软连接到 /usr/bin。可以理解/bin 是 /usr/bin 的快捷方式。 /lib 软连接到 /usr/lib。 /lib64 软连接到 /usr/lib64。 /sbin 软连接到 /usr/sbin。 /usr软件安装位置 /usr/bin 为系统命令所在目录。 /usr/local 为安装程序所在目录。 /…

算法基础知识科普:8大搜索算法之AVL树(上)

前段时间介绍了二叉搜索树&#xff08;BST&#xff09;&#xff0c;我们知道这种搜索结构存在的弊端是对输入序列存在强依赖&#xff0c;若输入序列基本有序&#xff0c;则BST近似退化为链表。这样就会大大降低搜索的效率。AVL树以及Red-Black树就是为了解决这个问题&#xff0…

GARFIELD@04-09-2005

a technical facto 转载于:https://www.cnblogs.com/rexhost/archive/2005/04/09/134701.html

Vue.js学习系列(四十二)-- Vue.js组件

2019独角兽企业重金招聘Python工程师标准>>> 组件&#xff08;Component&#xff09;是Vue.js最强大的功能之一。组件可以扩展HTML元素&#xff0c;封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用&#xff0c;几乎任 意类型的应用的界面都…

java sqlite使用小记

2019独角兽企业重金招聘Python工程师标准>>> Sqlite教程&#xff1a; http://www.runoob.com/sqlite/sqlite-tutorial.html 加载sqlite jdbc驱动&#xff1a; static{ try { Class.forName("org.sqlite.JDBC"); } catch (ClassNotFoundException e) { e.p…

算法基础知识科普:8大搜索算法之AVL树(中)

昨天我们介绍了平衡二叉树的基本概念&#xff0c;通过平衡因子来控制左右子树的深度&#xff0c;使得整个二叉搜索树始终保持平衡状态。这个算法的核心在于当平衡因子超过范围&#xff0c;如何通过旋转的方式来使二叉搜索树保持平衡&#xff0c;以及平衡后对应结点平衡因子如何…

Linux登录那点事

跨平台系列汇总&#xff1a;http://www.cnblogs.com/dunitian/p/4822808.html#linux 我们登录linux的时候基本上不太关注上面的这个提示&#xff0c;其实这个还是有点文章的 简单解释一下&#xff1a; 上一次dnt用户登录的时间&#xff0c;以及终端是tty1 知识普及&#xff1a;…

解决了一个遗留的Portlet奇怪问题

在做Portlet的时候碰到一个奇怪的问题&#xff0c;使用Java应用程序来进行RFT传输好好的&#xff0c;但在Pluto下&#xff0c;同样的一段程序却不行&#xff0c;提示&#xff1a;No client transport named https found!  搜索GT官网的maillist&#xff0c;发现有人提到是AXI…

Python 程序如何高效地调试?

Python在debug方面的支持还是不错的&#xff0c;在明确代码意义的情况下&#xff0c;通过log、print和assert分析错误原因&#xff0c;配合单元测试可以很高效。然而&#xff0c;实际工作中大量代码很可能出自他人之手&#xff0c;这种情况下&#xff0c;使用debugger就显得更加…

selenium中javascript调试

之前写了使用js输入长文件的文章&#xff0c;有同事在使用时&#xff0c;发现竟然无法输入&#xff0c;也不知道是什么原因&#xff0c;且用的还是id方式。 在参考网文后&#xff0c;才发现是js写的有问题&#xff0c;现总结一下 javascript调试&#xff0c;在firefox中就自带有…

算法基础知识科普:8大搜索算法之AVL树(下)

昨天我们介绍了在进行结点插入时&#xff0c;若左子树深度超过右子树深度两层则进行右旋来保持平衡。今天继续介绍&#xff0c;若右子树深度超过左子树深度两层时的左旋操作&#xff0c;以及删除结点后平衡因子的变更问题。 这些都掌握后&#xff0c;基本上对AVL就有一个很全面…

《代码敲不队》第八次团队作业:Alpha冲刺 第二天

项目内容这个作业属于哪个课程任课教师博客主页链接这个作业的要求在哪里作业链接地址团队名称代码敲不队作业学习目标掌握软件编码实现的工程要求。团队项目github仓库地址链接 GitHub 第二天 日期&#xff1a;2019/6/16 今日完成任务情况以及遇到的问题 针对设计好的数据库&a…