摘要:Android 用Timer做小動畫
這篇對SV來說實在太重要了!
在星期五的今天一個早上終於研究出來!
我果然要大嘆C#比較好用QQ
本來想說以C#的方式思考,結果還是Orz
總之,有時候我們遊戲會用到很簡單的動畫,比方拿起東西,你可以用東西的移動(昨天教的)來達到這樣的效果。
於是我們又可以拿培根貓做例子:
Timer timer = new Timer();
Handler handler=new Handler();
Runnable runnable; 先定義這三個變數(然後Import), 接著
runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()-20, bacon1.getRight(), bacon1.getBottom());
}
}; 這邊是你要做的動畫 最後在要執行的地方寫上: handler.postDelayed(runnable, 500); 這樣好像看不太清楚什麼意思, 以下為實例:
package com.sv.baconcat;
import java.util.Timer;
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
public class GameActivity extends Activity {
Timer timer = new Timer();
Handler handler=new Handler();
Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gam);
final ImageView bacon1=(ImageView)findViewById(R.id.bacon1);
TextView count=(TextView)findViewById(R.id.tvCount);
bacon1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()+10, bacon1.getRight(), bacon1.getBottom());
handler.postDelayed(runnable, 500);
}
});
runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
bacon1.layout(bacon1.getLeft(), bacon1.getTop()-20, bacon1.getRight(), bacon1.getBottom());
}
};
}
}
也就是當你點一個培根,那麼就會做"拿起培根"的動畫,也就是讓培根先往下移動(約10單位),0.5秒後往上移動(約20單位,與原本位置往上10單位)。
這樣就可以做微動畫了~
SV竟然研究了這麼久Orz
因為習慣C#的Timer,
所以就用這種方式了。
好處是你每點一次培根他都會有這樣的動畫。
阿~學程式與flash概念結合真不錯(算是小撇步囉~)
然後要感謝這一篇:
http://rritw.com/a/JAVAbiancheng/JAVAzonghe/20130115/291117.html
因為SV看了很多篇都看不懂,是這篇救了我喔~~~~!