第四章:圖元詳解(二)
實用方法
這篇文章主要對圖元中的實用方法進行一系列介紹。
[實用方法]
在圖元的方法當中,除去變換圖形的視覺樣式之外,還提供了一系列實用方法,它們會在您的開發過程中提供額外支持。
[面積函數]
getSquare方法可以返回一個封閉多邊形的面積。
例子:
public static void main(String[] args) {
UESIUES = new R();
Objrect = UES.creatObj(UESI.BGIndex);
rect.addGLRect("FFFFFF",0,0,30,50);
System.out.println(rect.getSquare());
}
控制檯打印結果:1500.0
[碰撞函數]
PolygonCollide函數可以判斷兩個多邊形是否發生了碰撞。
例子:
UESI UES = new R();
Objrect = UES.creatObj(UESI.BGIndex);
rect.addGLRect("FFFFFF",0,0,300,300);
rect.setAngle(45);
rect.setPosition(CANExPos.POS_CENTER);
rect.setDx(rect.getDx()+ 200);
rect.show();
Objrect2 = UES.creatObj(UESI.BGIndex);
rect2.addGLRect("FFFF00",0,0,300,300);
rect2.setAngle(45);
rect2.setPosition(CANExPos.POS_CENTER);
rect2.setDx(rect2.getDx()- 200);
rect2.show();
System.out.println(rect.PolygonCollide(rect2));
打印結果:true
將上例中兩個矩形長寬改爲200:
打印結果:false
[距離相關性]
getRefDistance函數可返回兩個圖元的中心距離,將以false爲結果的上例,加入如下語句:
rect.getRefDistance(rect2);
打印結果:
false
400.0
[角度相關性]
rect.getRefTheta函數可以返回另一個圖元中心相對於本圖元中心的弧度值,該值以Y負方向爲0點,順時針爲正。
UESI UES =new R();
Objrect = UES.creatObj(UESI.BGIndex);
rect.addGLRect("FFFFFF",0,0,100,100);
rect.setPosition(CANExPos.POS_CENTER);
rect.show();
Objrect2 = UES.creatObj(UESI.BGIndex);
rect2.addGLRect("FFFF00",0,0,100,100);
rect2.setPosition(CANRefPos.RPO_CORNER_RIGHTTOP,rect,100f);
rect2.show();
System.out.println(rect.getRefTheta(rect2));
打印結果:0.7853982(約爲PI/4)
[簡單動畫]
在某種場合下,我們僅需要進行一些簡單的移動實現,爲了這個簡單的動畫書寫Serial似乎很不值得,因此有一組移動圖元的方法:
moveCTo(Dx,Dy, allms):將圖元的中心移動到給定位置,最後一個參數allms代表經歷的時間。
moveDTo(Dx,Dy, allms):原理如上,是把圖元的位置(不是中心)移動到指定值。
在實際的開發過程中,這兩個方法用到的並不多,所以大部分情況下,實現動畫效果還是老老實實地寫Serial吧。