在开发过程需要对不规则的Animation运动进行坐标实时监听,但是基本上单线程很难实现,无论实在WindowsFocusChanged()里面依靠Timer调用坐标,还是利用其它监听器都不行,最后使用另一个线程监听的办法。
同时不断获得Animation运动中的Metrix,其中Metrix可以看做一个3X3的矩阵,Metrix[2]和Metrix[5]可以获得对应X和Y的偏移量,再加上原坐标就可以获得运动时的X,Y坐标。
下面贴代码:
private Thread getLocationThread = new Thread()//对应FlySwa1的监听线程
{
@Override
public void run()
{
while(ThreadFlag)
{
try{
Transformation transformation = new Transformation();
anim3.getTransformation(AnimationUtils.currentAnimationTimeMillis(), transformation);
Matrix matrix = transformation.getMatrix();
float []matrixValus = new float[9];
matrix.getValues(matrixValus);
location[0]=(int)matrixValus[2]+FlySwa1.GettempX();
location[1]=(int)matrixValus[5]+FlySwa1.GettempY();
try{
Thread.sleep(50l);
} catch (InterruptedException e){
e.printStackTrace();
}
}catch(Exception e)
{
}
}
//if(!ThreadFlag)
//{
// return;
//}
}
};