java 板


LINE

Animation 是 GWT 内的一个 class,名字取的很美妙, 实际上是在做什麽的呢? GWT 的 showcase 给了一个示范, 不过里头的程式码实在有点古怪,姑且直接来看 1.6 版的 API doc 怎麽说。 An Animation is a continuous event that updates progressively over time at a non-fixed frame rate. 哈哈... 根本就是骗人的,哪来什麽动画 [笑]。 简单地说「Animation 是一个会持续要求 update 动作的物件。 而间隔的时间是不固定的。」阿?这什麽鬼?还是用程式码来说明好了... import com.google.gwt.animation.client.Animation; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.Label; public class HelloAnimation extends AbsolutePanel{ private Label hello = new Label("Hello Animation"); private final int WIDTH = 800; private final int HEIGHT = 200; public HelloAnimation(){ this.setPixelSize(WIDTH, HEIGHT); this.add(hello); //要先加上去,才有办法移动 Player player = new Player(this); player.run(5*1000); //point-A } public void playOneFrame(double progress){ this.setWidgetPosition(hello, (int)(WIDTH*progress), HEIGHT/2); } }//end class HelloAnimation class Player extends Animation{ HelloAnimation target; public Player(HelloAnimation t){ target = t; } @Override protected void onUpdate(double progress) { target.playOneFrame(progress); } } 只要 new 一个 HelloAnimation,然後加到 RootPanel 上头去, 就会看「Hello Animation」从画面左边跑到右边。 (至於最後「Hello Animation」突然换行的状况,先跳过... XD) 里头两个 class 分别负责两件事情。 HelloAnimation 负责画面显示的部份,直接 extends AbsolutePanel, 搭配 AbsolutePanel.setWidgetPosition() 就可以很快速地设定 widget 的位置, 这样在上头的东西「动」起来就相对方便。 playOneFrame() 这个 method 就是在处理这件事情, 至於 progress 这个参数的作用,就必须回到 Animation (也就是范例程式里头的 Player)才能说明。 Player 这个 class 其实很简单,extends Animation 之後, 只有一个 method 必须实作,就是 onUpdate()。 这个 method 就是 API 提到的效果,当 Player 起作用的时候, onUpdate() 就会持续地被呼叫、并且给予不同的参数 progress 值, 值域介於 0~1 之间,会随着时间会越来越大,乘上 100 就是完成度啦, 因为实际负责「动」的物件是 HelloAnimation, 所以在呼叫 HelloAnimation.playOneFrame() 时候就原封不动地传进去。 这个参数在制作像动画这种东西时,就很方便, 因为 Animation 帮你算好 progress,不用自己动手。 像这个例子当中,「Hello Animation」要在指定的时间内横越指定的宽度, 但是在撰写 playOneFrame() 时完全不用理会「指定的时间」有多长, 只要把宽度乘上 progress 就解决了。 现在动画的长度是五秒钟(程式码 point-A), 要改成两倍慢 or 两倍快,就只要在 player.run() 时给 10 秒 or 2.5 秒就可以了。 看到这里,是不是觉得 GWT 设计的很好、使用起来很简单呢? [奸笑] 至於 Animation 的细节,我们下次再谈(初探嘛...) ======== 资料来源: http://pt2club.blogspot.com/2009/10/gwt-animation.html -- 侃侃长论鲜窒碍 首页:http://www.psmonkey.idv.tw 众目睽睽无心颤 Blog:http://ps-think.blogspot.com 茕居少聊常人事 杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.20.154.197
1F:推 undeadj:动画也是在一段时间内连续更新某个值来完成的,不是吗 XD 10/08 09:44
2F:→ AmosYang:野比太: 动画…就是画好了,拿起来动一动… 10/08 10:07







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP