libgdx为何去掉了Action类中的setCompletionListener
2013-05-08 19:44
337 查看
Action类在libgdx中是一个动作类,它可以让精灵实现很多动作,比如移动,旋转,缩放等等。通常我们希望在动作结束后能获得一个消息,这样以便于我们在动作结束后做一些其他的处理。按照java传统的思想,要想获得动作结束的消息,我们需要为Action对象增加一个监听器,这样在0.9.7版之前的libgdx中Action类是带有setCompletionListener这个函数的。但在0.9.7版之后这个函数消失了。。。。。这让我苦恼了一下午,没有了监听器,我该如何知道这个动作是否结束了?经过一下午查找翻阅资料,终于在官方文档中找到了答案。原来libgdx在0.9.7版后用另外一种方式实现了动作结束的事件响应。
先列出两种方式的代码.
监听器方式:
新方式
新方式的不仅使用了类似函数式编程的匿名函数写法,还可以同时执行多个动作。如果用以前的方式来实现新方式这小段代码的功能要多写很多代码。可以看出作者在不断开发学习过程中也深受了函数式编程思想的影响
如果大家不喜欢Action:{}这种写法,还可以引入静态包,用以下方式实现:
真是太喜欢这种新方式的写法了。
先列出两种方式的代码.
监听器方式:
move.setCompletionListener(new OnActionCompleted(){ @Override public void completed(Action arg0) { // TODO Auto-generated method stub System.out.println("MoveTo Complete!"); } });
新方式
Actions:{ r.addAction(sequence(moveBy(32,0,1),rotateBy(10),run(new Runnable(){ @Override public void run() { System.out.println("All action is completed"); } }))); }
新方式的不仅使用了类似函数式编程的匿名函数写法,还可以同时执行多个动作。如果用以前的方式来实现新方式这小段代码的功能要多写很多代码。可以看出作者在不断开发学习过程中也深受了函数式编程思想的影响
如果大家不喜欢Action:{}这种写法,还可以引入静态包,用以下方式实现:
import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*; . . . r.addAction(sequence(moveBy(32,0,1),rotateBy(10),run(new Runnable(){ @Override public void run() { System.out.println("All action is completed"); } })));
真是太喜欢这种新方式的写法了。
相关文章推荐
- MediaPlayer,切歌进入setOnCompletionListener的问题
- 优酷开放SDK之setOnCompletionListener
- setOnPageChangeListener 过时==>改成addOnPageChangeListener
- setOnItemClickListener
- TextView的setOnClickListener
- 解决使用PullToRefreshListView找不到setOnItemLongClickListener方法的问题
- setOnItemSelectedListener、setOnItemClickListener与setOnTouchlistener的区别
- 已解决:HorizontalScrollView的setScrollViewListener方法不兼容低版本的问题
- 关于f:setPropertyActionListener标签的问题
- listview setOnItemClickListener 失效问题
- 如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效
- ViewPager的setOnPageChangeListener方法详解
- Android setOnPageChangeListener 过时了怎么办?
- The method setOnClickListener(View.OnClickListener)解决办法
- Android开发中CheckBox、setOnClickListener和setOnCheckedChangeListener的不同之处在哪
- android中setOnClickListener的那点事
- Oracle DBA之手动注册监听(listener) -- alter system set local_listener="T02";
- Android:控件Spinner、getResources、setDropDownViewResource、setOnItemSelectedListener
- No static method setOnApplyWindowInsetsListener
- setOnTouchListener onTouchEvent setOnClickListener