【转载】GTween:轻便的Action Script 3.0缓动类库

2024-03-20 04:32

本文主要是介绍【转载】GTween:轻便的Action Script 3.0缓动类库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GTween概述

  GTween——提供给as3开发者的缓动类库(Programmatic Tweening for AS3 Developers)

  有许多非常好得缓动引擎,我是一个jack的TweenLite类库狂热爱好者(在将来他还将增加一些不可思议的新特征)。然而,这些类库不是一个十分符合我们和团队的需要,我需要一个具备体积小,快速,灵活,基于as3的类库,结果我选择了GTween。GTween是一个小的(4.5kb),快速的(1500 instances, 0.5s duration, ~25fps),实例基于缓动类,有许多选择和性能。从下面你可以学习GTween的许多重要特征。
  这当然不是试图取代任何现有的的缓动引擎。相反,它只是为了试图授予开发团队管理缓动程序的权利。目前,我已将它作为测试版发布。它已经进过了一些初略的测试,但是,作为一个性能如此强大的类库,我敢保证,它仍然有许多我们没有发现的bugs和优点。同样,我征求补充和修改,请将修改和补充输入到API中(包括特定属性或方法的名称),因此API有可能在以后有所改变。

基于开发者(Developer Oriented)

  GTween是完全针对as3开发者建立的类库,它使用基于实例的开发模型,而不是基于静态接口。同样,它基于事件模型而不是使用回调函数。这些为使用缓动的as3开发者提供了一个友好,一贯开发界面。
  这是一个建立缓动效果的简单例子,它侦听完成事件。

var myTween:GTween = new GTween(mySprite, 2, {x:200});myTween.addEventListener(Event.COMPLETE, handleTweenComplete);

  实例既可以是引用的又可以是短暂的,前者允许在运行中改变值和行为(参考Sequencing),后者与智能资源管理逻辑共同起作用以确保缓动不被收集直到运行结束(参考Resource Management)。

  引用实例和短暂实例对比例子。

//创建一个名为myTween 的引用,以便在后面能够修改var myTween:GTween = new GTween(mySprite, 2, {x:200});//运行一次,然后被垃圾收集器收集nnew GTween(mySprite1, 2, {x:400});

  GTween能够运用到任何一个对象的任何数字属性,你可以将它运用到声音上来产生缓动效果,也可以用来改变AIR窗口的大小,或是自定义对象类型的”foo”值,就像使用它来使Sprite产生x属性的缓动一样简单。 

缓动代理(Proxy Tweening)

  GTween提供一个唯一的代理属性,它使你运用缓动在目的值产生的效果和作用在目标对象上的效果一样,代理对象有效地代表目标对象。
  下面例子展示了如何使用代理使目标对象向右移动100px:

myTween.proxy.x += 100;

  在上面的例子中,代理将重新从目标对象得到x值(如果它在缓动中没有作为一个目的值存在),加上100,然后将作为一个目的值重新设置回。
  这是一个非常强大的特征,花少量时间就能够学会使用。可以在API文档找到代理清单更多的信息和例子。

中断缓动(Interrupting Tweens)

  使用GTween,你能够在缓动动画播放的时候修改它,它将试图适应这些更改。在滑入动画执行完成之前用户关闭一个面板?使用reverse(),它将滑回接近它当前的位置。如果需要移动一个Sprite到不同的位置,或者在缓动动画运行的时候加入一个淡出的效果?仅需要在运行时调整它的值就可以了。
  这个简单的例子向你展示如何使sprite影片移动到用户在舞台上单击的位置。你一定注意到,用户可以在任何时候单击鼠标,而缓动动画将平稳地自我调节以最终到达目的地。

var myTween:GTween = new GTween(mySprite,1);stage.addEventListener(MouseEvent.CLICK,handleClick);function handleClick(evt:MouseEvent):void {myTween.proxy.x = mouseX;myTween.proxy.y = mouseY;}

  你也可以适用end()或beginning()使缓动动画立即跳到动画的结尾或开始。调用end(true)将递归结束所有序列动画。

序列动画(Sequencing Tweens)

  GTween提供了三个特征,允许使多个动画进行先后排序:child tweens, delay, and nextTween.
使用addChild,你可以联合多个动画以作为原动画的子动画。当子动画运行时,它们将和父(原)动画保持同步。你甚至可以选择同步延误,开始,结束或持续时间。
  你也可以使用nextTween指定当一个动画结束时另一个要播放的动画,和指定另一个动画在播放之前需要等待的时间。 
  下面的例子演示了同步播放两个动画,在等待两秒后随即播放第三个动画。

var myTween1:GTween = new GTween(target1,3,{x:20});var myTween2:GTween = new GTween(target2,0,{x:200});myTween1.addChild(myTween2,GTween.DURATION);var myTween3:GTween = new GTween(target3,3,{y:50});myTween3.delay = 2;myTween1.nextTween = myTween3;

计时模式(Timing Modes)

  GTween另一个特色是支持多种计时模式。你可以使用通用的时间计时模式,帧频计时模式,和混合计时模式。

  • 在”time“计时模式,所有的持续时间和位置使用秒指定,和使用一个可以配置的频率(例如.每50毫秒)更新和运行.这提供一个更加严格的控制,但是会占用更多的CPU,使CUP状况出现更大的起伏。
  • 在”frame”计时模式下,所有的持续时间和位置使用帧频指定,在每一帧更新和运行,这种模式占用的CUP较少,还允许你的动画与时间轴动画同步,但是在高CUP占有时,全面的持续时间将难以预料。
  • 在”hybrid”计时模式下,在每一帧进行更新,但是允许你使用秒指定持续时间。在每一帧,动画将根据上一次更新过去的时间调整它的位置。
GTween.timingMode = GTween.TIME;

  因为开发者在项目中不太可能改变,它被指定为一个类级别的属性。无论如何,GTween将继续使用旧的设置和旧的缓动动画,它允许你在任何时候更改计时模式。

暂停所有(Pause All)

  能够轻易地使所有的缓动动画暂停。当用户要暂停的时候,暂停你项目中所有的Sprites,或者在你打开一个对话框的时候暂停所有的转换效果。
  GTween提供一个类级别的pauseAll属性,它将停止所有的缓动动画而不会影响每一个影片暂停前的特征!

myTween.paused = false;GTween.pauseAll = true; // pause ALL tweens.trace(myTween.paused); // false

强大的事件(Robust Events)

  GTween提供三种内建的事件。激活(activate)事件让你知道什么时候缓动动画将开始运行,初始化(Init)事件当迟滞完成并动画开始时触发,改变(change)事件在缓动动画更新时触发,完成(Complete)事件在影片结束时触发。
  还不够?GTween允许你在缓动动画中动态添加定制点并在缓动动画到达定制点后出发事件。下面的例子展示一个持续事件为3秒的缓动动画在经过中点(1.5秒时),找到"halfway" 字符(版本Beta 4)。

var myTween:GTween = new GTween(target1, 3, {alpha:1});myTween.addProgressPoint(1.5,"halfway");myTween.addEventListener(GTween.PROGRESS,onProgress);function onProgress(evt:Event):void {trace(String(myTween.lastProgressPoint));}

  注意:你可以在到达定制点时使用任何调用一种数据类型,字符标签,一个到达定制点时调用的函数,运行另一个缓动动画,任何你想要的。

import com.gskinner.motion.*;          //使用类前需要导入用到的类,*通配符代表导入包内所有的内var myTween:GTween = new GTween(mySprite1, 6, {x:400});   //创建一个名为myTween 的引用,以便在后面能够修改myTween.addProgressPoint(2,"point1");                         //在2秒的时候设置一个定制点myTween.addProgressPoint(4," point2");                       //在4秒时设置另一个定制点myTween.addEventListener(GTween.PROGRESS,onProgress);                 //注册侦听器function onProgress(evt:Event):void {if (String(myTween.lastProgressPoint)==" point1") {trace(String(myTween.lastProgressPoint));//输出字符new GTween(mySprite2,3,{x:400});//调用一个} else {trace(String(myTween.lastProgressPoint));new GTween(mySprite3,2,{alpha:0});}}

 

这篇关于【转载】GTween:轻便的Action Script 3.0缓动类库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828291

相关文章

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

script中的src

<script src="http://www.somewhere.com/afile.js"></script> 浏览器在解析这个资源时,会向 src 属性指定的路径发送一个 GET 请求,以取得相应资源,假定 是一个 JavaScript 文件。这个初始的请求不受浏览器同源策略限制,但返回并被执行的 JavaScript 则受限制。 当然,这个请求仍然受父页面 HTTP/HTTPS

深入探讨:ECMAScript与JavaScript的区别

在前端开发的世界中,JavaScript无疑是最受欢迎的编程语言之一。然而,很多开发者在使用JavaScript时,可能并不清楚ECMAScript与JavaScript之间的关系和区别。本文将深入探讨这两者的不同之处,并通过案例帮助大家更好地理解。 一、什么是ECMAScript? ECMAScript(简称ES)是一种脚本语言的标准,由ECMA国际组织制定。它定义了语言的语法、类型、语句、

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

JavaScript中document.cookie

“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。       每个 Cookie 都是这样的:<cookie名>=<值>   <cookie名>的限制与 javasc

javascript实现ajax

什么是 ajax ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取。 http 请求 首先需要了解 http 请求的方法(GET 和 POST)。 GET 用于获取数据。GET 是在 URL 中传递数据,它的安全性低,容量低。 POST 用于上传数据。POST 安全性一般,容量几乎无限。 aj

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]