1、编写目的
软件学院培养计划学期末展开课设, 通过实训,巩固、深化和扩展学生所学的JavaEE框架理论知识与专业技能,提高学生分析问题、解决问题的能力和动手编程能力,使学生能够掌握一个基于WEB的小型应用系统的设计与开发,同时进一步熟悉数据库的设计及使用。要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
2、背景
项目要求开发基于Struts2设计和开发软件学院实训优秀教学资源共享平台,以任务书为指导,做出符合规定的项目。
随着经济的发展,共享成为时代的主旋律。近年来,共享单车,共享电源等系列产品如雨后春笋般出现,这些不仅便利了人们的生活,而且使得共享意识扎根于人们脑海中。而后共享便构成一种新型的社会发展模式,即资源共享与速效成果趋势。通过对零散资源的有效整合,既能满足大众需求方便快捷地获取所需事物,还能促进本行业在大众协力下高速发展。
人们物质生活的逐渐丰富,对精神生活的需求越来越大,资本和劳动力大量流向教育、旅游、计算机软件、信息咨询等方面。百年大计,教育为本,它不仅能够促进个人的发展,更能决定社会、国家以致整个人类文明的未来。
在这样的时代背景下,科学高效的教学资源,已经成为人们生活不可或缺的重要部分。再看我国当前的教育现状,各地区间的差异所导致的教育不平衡性已经严重阻碍了社会的发展,具体表现为教学资源的严重短缺,直接导致了教师间水平上的差距,继而影响了学生所受教育的品质。因此,如何让有限的教学资源高效地流通起来,已经成为教育界迫在眉睫的事情。
在此背景下,教师资源共享信息平台应运而生。
3、定义、缩写词和符号
基本要求:
(1)使用Struts2或别的框架,数据库自由选择(MySql、SQLServer或ORACLE);
(2)按照软件工程的思想完成系统开发过程(包括需求分析、系统设计、编码实现和测试运行);
(3)最终系统要求数据充实、界面友好、使用方便。
4、参考资料
《Struts2.x权威指南》 电子工业出版社 李刚 2012.10
《数据库原理及应用》 清华大学出版社 刘爽英 2013.01
《架构探险:从零开始写Java Web框架》 电子工业出版社 黄勇 2015-08-01
1、目标
本平台——教师资源共享平台顺应时代主题,以教师学生为目标群体,为他们提供一个交流共享的平台,主要功能及要求:
1.资源分类:根据每年的技术实训方向拟分为Java、信息安全、大数据、HTML5,SAP、UI、移动互联网等几类资源的共享。
2.教师教学资源上传功能:不同技术方向的教师只具备上传本方向的技术资源如JAVA的授课教师是A,则其登录后只能上传Java类资源,上传类型包括上课视频、上课的案例、学生优秀作品、技术文章等。每个资源有相关信息的描述,如名字、简述、上传时间等。
3.学生资源共享:学生可上传自己的作品,但需要教师审核才能上传成功。
4.下载功能:游客可浏览资源,登录用户可观看、下载所选择的资源。
5.资源的评论、评分功能:用户可对资源进行评论、给出评分。
6.资源查询功能:可根据标题、类别、教师等进行单条件和多条件查询,查询结果还可根据评分进行排序查询。
2、 运行环境
服务器:Tomcat7.0
主 机:windows7
3、 功能描述
图 1 业务资源图
图 2功能图解1
图 3 功能图解2
根据设计内容和要求进行需求分析,分析出系统的主要功能和设计重点。
根据需求分析的内容在小组中合理划分模块。
记得一年多以前,SAP全球执行副总裁、SAP大中华区总裁纪秉盟(Mark Gibbs)面对数十家媒体,首次用“云优先战略”来解读SAP的未来5年计划;而今,有报告指出,SAP已经是Github上开源项目的十大全球贡献者之一,超过80名SAP工程师为Cloud Foundry项目做出贡献。
可以确定的是,一如SAP这样的覆盖企业数字化核心的ERP巨头,如今也已经在云计算和开源的大道上急速飞奔——SAP不仅正在大力推动云原生的企业级项目落地,比如数字化核心SAP S/4HANA Cloud的SaaS云和SAP Cloud Platform的PaaS云这样的重量级产品线;同时,也在迅速与包括AWS、Azure、阿里云在内的全球前五大IaaS服务提供商达成战略级合作伙伴关系。
至此,在笔者看来,一个开放、开源的SAP云生态战略已经越来越清晰了。为什么这么说?我们可以从以下几个方面逐层解读。
了解SAP的人或许知道,除了SAP的S/4HANA Cloud ERP云之外,SAP在过去几年陆续投入了近500亿美元用来并购各类企业级SaaS云应用领域的独角兽公司,包括Hybris、Ariba、SuccessFactors、Concur、Fieldglass以及最新收购的Gigya和CallidusCloud等。
不过很显然,虽然这些云产品在各自领域都是独角兽级别,但SAP既然并购进来,就一定会想办法把它们统合起来,发挥更大的价值。
今年6月,在奥兰多举办的SAP2018年度SAPPHIRE NOW大会上,SAP推出了全新整合的CRM云解决方案SAP C/4HANA,其核心组件包括了SAP Marketing Cloud(营销云)、SAP Commerce Cloud(电商云)、SAP Service Cloud(服务云)、SAP Customer Data Cloud(客户数据云,其中包含收购的 Gigya 解决方案)和 SAP Sales Cloud(销售云,其中包含收购的CallidusCloud 解决方案等5朵云。算下来,SAP的知名SaaS云解决方案已经不下10余种。
不仅如此,SAP还陆续与AWS、微软Azure、阿里云、Google云等全球所有主要超大型公有云计算架构提供商和IBM等私有云主要供应商开展了全方位的合作——例如今年9月19日,SAP全球CEO孟鼎铭(Bill McDermott)与阿里巴巴集团CEO张勇在杭州云栖大会上携手宣布SAP最核心同时也是最新的两大解决方案——SAP S/4HANA Cloud和SAP Cloud Platform与阿里云一起通过联合创新,加速云端落地,成就智慧企业。
值得一提的是,在SAP的SaaS云“百花齐放”及IaaS云“遍地开花”的公司多云策略中的关键一环就是SAP自研的唯一一款PaaS云方案:SAP Cloud Platform,即SAP云平台。
“SAP云平台是SAP的中枢神经系统。”SAP联合创始人Hasso博士在2018年度SAPPHIRE NOW大会的主题演讲中给SAP云平台做了一个权威和准确的定位。
SAP联合创始人Hasso博士在2018年度SAPPHIRE NOW大会上的主题讲演内容
事实上,SAP云平台改变了SAP的创新方式,使得SAP能够更快、更容易地向合作伙伴和客户交付融入机器学习、区块链或基于SAP HANA的应用程序。
首先,SAP云平台将SAP的所有SaaS云解决方案集中在一个产品套件中,客户可以使用它来实现端到端的无缝的互联互通,SAP云平台是这些相对独立的SaaS云解决方案之间的粘合剂。SAP云平台为这些SaaS应用及本地化应用提供了一个集成层,这样客户就有了一致和集成的数据,并且这些数据并不是孤立的——客户可以统一规划,一起来使用这些解决方案。
其次,该平台允许客户的开发团队从头开始构建新的解决方案,帮助他们进行数字转换——开发人员可以将这些新应用集成到SAP或非SAP解决方案中,因为SAP云平台与亚马逊AWS、谷歌云、微软Azure和阿里云等IaaS公共云提供商合作,拥有开放API,并支持开源编码语言。
应该说,SAP云平台是一个让SAP的客户变得敏捷的敏捷平台——客户可以逐步开发解决方案,查看解决方案是否满足用户的需求,根据用户的反馈调整下一次迭代,然后快速扩展并在整个组织中带来创新。
这样的改变,实际上是SAP本身使命的一大转变。正如Hasso博士所言:“智慧企业超越了ERP本身”——SAP从为企业提供ERP企业资源计划,到如今帮助企业打造全价值链的智慧企业。
在笔者看来,从企业内扩展到企业周边乃至最终用户,很大程度上是因为客户市场从卖方市场到买方市场的转变。
简单一个例子:一家卖席梦思企业,原来每个顾客大约8~10年才更换一次床垫,但如今,这家卖床垫的公司改变了他们的业务模式,他们今天不光卖床垫,还会向顾客提供APP,帮助顾客去监测他们的睡眠质量,这样这家企业就能和他们的顾客之间保持长期的交互,并向他们提供改善睡眠质量的解决方案。
不仅是2C的企业,如今越来越多的B2B公司,都在把商业模式转向B2B2C,注重获取消费者的第一手消费者信息。比如一家专门生产巴士汽车的公司,过去是2B的商业模式,如今它会收集巴士投入运营后的乘客数据,并且利用这些数据来改良巴士汽车的设计。
换句话说,有越来越多的商家注重向客户交付一个端到端完整的客户体验,这就需要实时了解前端客户需求的变化,需要了解自身后端供应链的交付能力——很明显,中台是链接后端ERP业务和前端CRM业务的关键所在,也就是说,SAP云平台这样一个PaaS云的中台解决方案就处于越来越重要的地位;与此同时,各行各业的前端场景都需要纳入系统中,而这不可能是某一家公司能够从头至尾独自完成的。
通过SAP云平台可以帮助企业可以按照自己希望的方式掌控自身的数据安全,在任何IT基础架构上,拥有更灵活、快速和敏捷的创新能力,打造智慧企业。
实际上,从互联网思维到用户体验,再到未来的物联网和智能世界,数据已经成为一切的基础,而不再像过去二三十年那样,仅仅是企业内部的财务、生产和供应链等企业级系统。
“SAP经验丰富的开发人员已经在内部构建整个企业级业务系统几十年了,但是现在他们已经认识到他们不可能构建智慧企业系统中的所有东西。他们必须把目光投向开放源码,并接受它。”SAP云平台产品营销全球副总裁Dan Lahl介绍说:“与早些时候相比,我们现在有很多经验丰富的开发人员和年轻的开发人员。SAP内部的文化正在改变,我们需要两者兼备。现在SAP团队比以往任何时候都在更多的地方使用开源。”
数据采集技术的发展和数据处理技术的发展,让云和端相辅相成,遍及今天的任何行业。对于每一家企业来说,今天都有太多的代码需要编写,以至于每个人都在向软件的协同开发迈进,而这正是像Kubernetes和Cloud Foundry这样的开源项目获得动力的地方。
“为了能够更好地帮助我们的客户,我们必须接纳和拥抱开源技术。”Dan Lahl表示,“比如SAP正在为Cloud Foundry构建开放服务代理API(Open Service Broker API);比如SAP与SUSE合作在Kubernetes之上构建Cloud Foundry发行版; 此外,SAP还在向SAP云平台添加来自其他供应商的更多功能,比如一些机器学习的技术——我们正在走出去,把开源的能力带给开源社区,也把开源的能力反哺给SAP,这是SAP未来生存的唯一途径。”
事实上,到2018年年中,SAP API Business Hub上已经发布了100多个易于使用的API集成内容包——SAP正在大量投资于简化端到端集成的模板、连接器和工具。
“通过今年10月份发布的SAP Cloud Platform Integration Suite集成套件服务云所提供的跨商业应用和开源系统的集成能力,客户可以用CP Integration连通SAP旗下的所有SaaS云应用及OP本地化应用。”SAP中国区SAP云平台业务拓展总监刘宏江表示,此外,通过CP Open Connectors这一开源技术还可以让SAP云平台连通第三方的云应用,并通过开放开源的API技术把CP Integration和Open Connector实现无缝集成,以预置式服务和文本的方式提供给有需要的客户,可以实现开箱即用。
举个例子,比如从招聘到退休流程、从销售线索到收款流程,或者从采购到付款的流程,这些流程可能贯穿于多种应用,比如SaaS软件即服务应用、OP本地化企业预置型应用或定制应用,因此企业比以往更需要无缝集成SAP和非SAP应用中的各种端到端流程。
据悉,借助SAP Cloud Platform Integration Suite集成套件服务云,企业可以利用150多个面向第三方应用的开放式连接器,通过统一的API,实现1对多的基于中心的集成模式,进而简化端到端流程的集成。
值得一提的是,SAP云平台上除了SAP Cloud Platform Integration Suite集成套件服务云,还有SAP Cloud Platform Experience Maker,即数字化用户体验服务云——如果两者一起使用,可以帮助企业快速实现云端到云端,云端到本地的后台业务应用系统级的互联互通以及以最终用户为核心的云端体验提升服务,为客户、员工及合作伙伴打造敏捷,高效的企业级互联互通及体验提升服务。
“对标业内的云服务细分标准,SAP的云平台实际上提供了面向系统间集成的iPaaS集成套件服务云和面向最终用户前端应用体验提升及开发的aPaaS数字化用户体验服务云。”刘宏江解释说,iPaaS的作用是把复杂的企业架构中分散化的海量数据等信息,进行流程集成、数据集成、物联网底层集成,在系统层面整合人员、流程、事件和事物;aPaaS则是通过SAP所擅长的Fiori、Cloud Portal、Jam等企业用户体验服务,让客户用最小的代价来实现最大化的云端应用体验的提升,让企业级应用拥有消费者级的用户体验。
“SAP试图让客户尽可能轻松地生活在一个需要不同云方案和应用程序之间集成的混合云环境中。”在Dan Lahl看来,借助开源,如今在SAP云平台上进行云端开发变得容易了很多——因为在开源的环境下,只要团队中有一位懂SAP业务系统和互联网技术的架构师,其他团队成员具备一定的互联网开发经验,懂HTML5、Java,基本上就可以上手SAP云平台的开发实践。
据悉,未来SAP将在SAP云平台上发布更多的元数据和API,方便客户将云端应用程序与后台的SAP或非SAP的各类业务系统,无论在云端还是在本地,都可以通过云平台无缝连接起来,实现敏捷开发及创新应用。
毫无疑问,一个开源开放的SAP,一定会给业界带来更好的创新环境,帮助企业实现智慧企业的梦想。
文/余文
《科技看门道》坚持深度报道,希望能通过资深媒体人对IT产业热点新闻的深入思考,挖掘其背后的商业逻辑和创新模式——不仅看热闹,更要看门道!
《科技看门道》主笔在行业渠道媒体拥有超过15年的从业经历,不仅对IT消费类和企业级软件、硬件、云计算、大数据、人工智能、区块链均有较深入的理解,同时见证了中国IT产业链上下游合作生态圈包括分销、零售、SI、ISV和CSV的进化历程,见证了金融、能源、制造、医疗、教育、政府、零售、高科技等行业的信息化之路。
《科技看门道》相信,IT产业在供给侧的改革——包括云计算、大数据、移动互联、人工智能、区块链等,将会成为推动各行各业发展进步的核心力量。
果图
各位朋友大家好!
今天给大家带来的是 酷炫的svg与canvas结合动画特效源码!
有想要文件版源码的 可以私聊小编
废话不多说上源码!
select = function(s) {
return document.querySelector(s);
},
selectAll = function(s) {
return document.querySelectorAll(s);
},
mainSVG = select('.mainSVG'),
orbit = select('#orbit'),
dot = select('#dot'),
startShape = select('#startShape'),
endShape = select('#endShape'),
shapeGroup = select('#shapeGroup'),
pContainer = select('#pContainer'),
particlePool = [],
numParticles = 400,
particleCount = 0
TweenMax.set('svg', {
visibility: 'visible'
})
TweenMax.set(['#startShape','#endShape'], {
transformOrigin:'50% 50%'
})
var orbitPath = MorphSVGPlugin.pathDataToBezier(orbit.getAttribute('d'), {
offsetX: 0,
offsetY: 0
})
var mainTl = new TimelineMax();
var tl = new TimelineMax({ repeat:-1, yoyo:false});
var tl2 = new TimelineMax({ repeat:-1, yoyo:false, onUpdate:playParticle});
tl2.to(dot, 6, {
bezier: {
type: "cubic",
values: orbitPath,
autoRotate: false
},
ease:Linear.easeNone
})
//shapes
tl.to('#startShape', 20, {
rotation:360,
ease:Linear.easeNone
})
.to('#endShape', 20, {
rotation:-360,
ease:Linear.easeNone
},'-=20')
function createParticles() {
var i = numParticles, p;
while (--i > -1) {
p = document.createElementNS(xmlns, 'use');
p.setAttributeNS(xlinkns, "xlink:href", '#particle');
pContainer.appendChild(p);
//p.setAttributeNS(null, 'fill', particleColorArray[i % particleColorArray.length]);
p.setAttributeNS(null, 'opacity', 0);
p.setAttribute('class', "particle");
particlePool.push(p);
}
}
function playParticle(){
var p = particlePool[particleCount];
var curr = {x:dot._gsTransform.x, y:dot._gsTransform.y};
var rad = Math.atan2(curr.y - 300, curr.x - 400);
var deg = Math.round(rad * (180/Math.PI));
//console.log(deg)
//console.log(dot._gsTransform.x)
TweenMax.set(p, {
x:randomBetween(curr.x, curr.x - 5),
y: randomBetween(curr.y, curr.y+5),
alpha:1,
transformOrigin:'50% 50%'
});
var tl = new TimelineMax();
tl.to(p, randomBetween(3, 6), {
//paused:true,
physics2D: {
velocity: randomBetween(5, 10),
angle:(deg % 2) ? deg : deg - 180,//randomBetween(-95, -85),
gravity:randomBetween(-1, 1)
},
scale:randomBetween(0, 3.3),
//rotation:randomBetween(180, 780),
onComplete:completeParticle,
onCompleteParams:[p],
alpha:0
//skewY:(Math.random() * 180),
//ease: Power4.easeIn,
//onStart:flicker,
//onStartParams:[p]
});
particleCount++;
particleCount = (particleCount >=numParticles) ? 0 : particleCount
}
function flicker(p){
//console.log("flivker")
TweenMax.killTweensOf(p, {alpha:true});
TweenMax.fromTo(p, 0.4,{
alpha:1
}, {
alpha:Math.random(),
ease: RoughEase.ease.config({ template: Power0.easeNone, strength: 3, points: 6, taper: "both", randomize: true, clamp: false}),
repeat:-1
})
}
function completeParticle(p){
TweenMax.set(p, {
x:-10,
y:-10,
alpha:1,
scale:1
})
}
function randomBetween(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
createParticles();
mainTl.add(tl,0);
mainTl.add(tl2,0);
//ScrubGSAPTimeline(mainTl)
mainTl.timeScale(1)
TweenMax.globalTimeScale(1)
/*!
* VERSION: 0.1.3
* DATE: 2015-03-24
* UPDATES AND DOCS AT: http://greensock.com
*
* This is a special version of the plugin that is only to be used on certain sites like codepen.io. It will redirect to a page on GreenSock.com if you try using it on a different domain. Please sign up for Club GreenSock to get the fully-functional version at http://greensock.com/club/
*
* @license Copyright (c) 2008-2015, GreenSock. All rights reserved.
* Physics2DPlugin is a Club GreenSock membership benefit; You must have a valid membership to use
* this code without violating the terms of use. Visit http://greensock.com/club/ to sign up or get more details.
* For licensing details, see http://greensock.com/licensing/
*
* @author: Jack Doyle, jack@greensock.com
*/
var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";var a=Math.PI/180,b=function(a,b,c,d,e){this.p=b,this.f="function"==typeof a[b],this.start=this.value=this.f?a[b.indexOf("set")||"function"!=typeof a["get"+b.substr(3)]?b:"get"+b.substr(3)]():parseFloat(a[b]),this.velocity=c||0,this.v=this.velocity/e,d||0===d?(this.acceleration=d,this.a=this.acceleration/(e*e)):this.acceleration=this.a=0},c=Math.random(),d=_gsScope._gsDefine.globals,e=d.com.greensock.core.Animation._rootFramesTimeline,f="",g="Physics2DPlugin",h=String.fromCharCode(103,114,101,101,110,115,111,99,107,46,99,111,109),i=String.fromCharCode(47,114,101,113,117,105,114,101,115,45,109,101,109,98,101,114,115,104,105,112,47),j=function(a){for(var b=-1!==(window?window.location.href:"").indexOf(String.fromCharCode(103,114,101,101,110,115,111,99,107))&&-1!==a.indexOf(String.fromCharCode(108,111,99,97,108,104,111,115,116)),c=[h,String.fromCharCode(99,111,100,101,112,101,110,46,105,111),String.fromCharCode(99,100,112,110,46,105,111),String.fromCharCode(103,97,110,110,111,110,46,116,118),String.fromCharCode(99,111,100,101,99,97,110,121,111,110,46,110,101,116),String.fromCharCode(116,104,101,109,101,102,111,114,101,115,116,46,110,101,116),String.fromCharCode(99,101,114,101,98,114,97,120,46,99,111,46,117,107),String.fromCharCode(116,121,109,112,97,110,117,115,46,110,101,116),String.fromCharCode(116,119,101,101,110,109,97,120,46,99,111,109),String.fromCharCode(116,119,101,101,110,108,105,116,101,46,99,111,109),String.fromCharCode(112,108,110,107,114,46,99,111),String.fromCharCode(104,111,116,106,97,114,46,99,111,109),String.fromCharCode(106,115,102,105,100,100,108,101,46,110,101,116)],d=c.length;--d>-1;)if(-1!==a.indexOf(c[d]))return!0;return b&&window&&window.console&&console.log(String.fromCharCode(87,65,82,78,73,78,71,58,32,97,32,115,112,101,99,105,97,108,32,118,101,114,115,105,111,110,32,111,102,32)+g+String.fromCharCode(32,105,115,32,114,117,110,110,105,110,103,32,108,111,99,97,108,108,121,44,32,98,117,116,32,105,116,32,119,105,108,108,32,110,111,116,32,119,111,114,107,32,111,110,32,97,32,108,105,118,101,32,100,111,109,97,105,110,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,109,101,109,98,101,114,115,104,105,112,32,98,101,110,101,102,105,116,32,111,102,32,67,108,117,98,32,71,114,101,101,110,83,111,99,107,46,32,80,108,101,97,115,101,32,115,105,103,110,32,117,112,32,97,116,32,104,116,116,112,58,47,47,103,114,101,101,110,115,111,99,107,46,99,111,109,47,99,108,117,98,47,32,97,110,100,32,116,104,101,110,32,100,111,119,110,108,111,97,100,32,116,104,101,32,39,114,101,97,108,39,32,118,101,114,115,105,111,110,32,102,114,111,109,32,121,111,117,114,32,71,114,101,101,110,83,111,99,107,32,97,99,99,111,117,110,116,32,119,104,105,99,104,32,104,97,115,32,110,111,32,115,117,99,104,32,108,105,109,105,116,97,116,105,111,110,115,46,32,84,104,101,32,102,105,108,101,32,121,111,117,39,114,101,32,117,115,105,110,103,32,119,97,115,32,108,105,107,101,108,121,32,100,111,119,110,108,111,97,100,101,100,32,102,114,111,109,32,101,108,115,101,119,104,101,114,101,32,111,110,32,116,104,101,32,119,101,98,32,97,110,100,32,105,115,32,114,101,115,116,114,105,99,116,101,100,32,116,111,32,108,111,99,97,108,32,117,115,101,32,111,114,32,111,110,32,115,105,116,101,115,32,108,105,107,101,32,99,111,100,101,112,101,110,46,105,111,46)),b}(window?window.location.host:""),k=_gsScope._gsDefine.plugin({propName:"physics2D",version:"0.1.3",API:2,init:function(c,d,k){if(!j)return window.location.href="http://"+h+i+"?plugin="+g+"&source="+f,!1;this._target=c,this._tween=k,this._runBackwards=k.vars.runBackwards===!0,this._step=0;for(var s,l=k._timeline,m=Number(d.angle)||0,n=Number(d.velocity)||0,o=Number(d.acceleration)||0,p=d.xProp||"x",q=d.yProp||"y",r=d.accelerationAngle||0===d.accelerationAngle?Number(d.accelerationAngle):m;l._timeline;)l=l._timeline;return this._stepsPerTimeUnit=s=l===e?1:30,d.gravity&&(o=Number(d.gravity),r=90),m*=a,r*=a,this._friction=1-Number(d.friction||0),this._overwriteProps.push(p),this._overwriteProps.push(q),this._x=new b(c,p,Math.cos(m)*n,Math.cos(r)*o,s),this._y=new b(c,q,Math.sin(m)*n,Math.sin(r)*o,s),this._skipX=this._skipY=!1,j},set:function(){var e,f,g,h,i,j,b=this._tween._time,c=this._x,d=this._y;if(this._runBackwards===!0&&(b=this._tween._duration-b),1===this._friction)g=.5*b*b,e=c.start+(c.velocity*b+c.acceleration*g),f=d.start+(d.velocity*b+d.acceleration*g);else{if(b*=this._stepsPerTimeUnit,h=j=(0|b)-this._step,i=b%1,j>=0)for(;--j>-1;)c.v+=c.a,d.v+=d.a,c.v*=this._friction,d.v*=this._friction,c.value+=c.v,d.value+=d.v;else for(j=-j;--j>-1;)c.value-=c.v,d.value-=d.v,c.v/=this._friction,d.v/=this._friction,c.v-=c.a,d.v-=d.a;e=c.value+c.v*i,f=d.value+d.v*i,this._step+=h}this._skipX||(c.r&&(e=0|e+(0>e?-.5:.5)),c.f?this._target[c.p](e):this._target[c.p]=e),this._skipY||(d.r&&(f=0|f+(0>f?-.5:.5)),d.f?this._target[d.p](f):this._target[d.p]=f)}}),l=k.prototype;l._kill=function(a){return null!=a[this._x.p]&&(this._skipX=!0),null!=a[this._y.p]&&(this._skipY=!0),this._super._kill(a)},l._roundProps=function(a,b){(a.physics2D||a[this._x.p])&&(this._x.r=b),(a.physics2D||a[this._y.p])&&(this._y.r=b)},k._autoCSS=!0,k._cssRegister=function(){var a=d.CSSPlugin;if(a){var b=a._internals,e=b._parseToProxy,f=b._setPluginRatio,g=b.CSSPropTween;b._registerComplexSpecialProp("physics2D",{parser:function(a,b,d,h,i,j){j=new k;var o,l=b.xProp||"x",m=b.yProp||"y",n={};return n[l]=n[m]=c++,o=e(a,n,h,i,j),i=new g(a,"physics2D",0,0,o.pt,2),i.data=o,i.plugin=j,i.setRatio=f,j._onInitTween(o.proxy,b,h._tween),i}})}}}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()();
*请认真填写需求信息,我们会在24小时内与您取得联系。