Android Oyun Programlama Ders 5: Text Oluşturma

Andrid ile oyun programlama derslerinin beşincisinde, ekrana bir metin yazdırmak için kullanılması gereken 3 nesneye; BuildableTexture, ChangeableText ve Font nesnelerine, oluşturulma aşamalarına ve özelliklerine değineceğim.

BuildableTexture nesnesi, metnin görüntüleneceği alanı oluşturur ve bu alanın boyutlarını belirler. Resimlerle kullanılan texture ile aynı mantıkta kullanılır yani.
[cc lang=’java’]
this.bTexture = new BuildableTexture(512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
[/cc]
Font nesnesi oluşturulurken yapıcı metoduna(consructor) bir BuildableTexture, bir ttf uzantılı dosya, font büyüklüğü ve renk parametrelerini alır. Bu ttf dosyası, fontun stilini belirler. Örnekte kullandığım “CONTACT.ttf” dosyasını buradan indirebilirsiniz. Bu dosya da diğer örneklerdeki resimlerin olduğu gibi Assets/gfx konumunda bulunmalı.
[cc lang=’java’]
this.font = FontFactory.createStrokeFromAsset(this.bTexture, this, “gfx/CONTACT.ttf”, 40, true, Color.WHITE, 2, Color.rgb(97, 134, 147));
[/cc]
ChangeableText nesnesi ise metnin ekranda hangi koordinatlara çizileceğini belirler. Bir nevi sprite görevi görür. Yapıcı metoduna aldığı parametler sırasıyla; çizdirileceği koordinatın x bileşeni ve y bileşeni, font nesnesi, yazdırılacak metin ve son olarak metnin azami uzunluğu.
[cc lang=’java’]
this.cText1 = new ChangeableText(100, 80, this.font, “”, 20);
[/cc]

Ön bilgilerin ardından kısaca örnek uygulamayı da açıklamak istiyorum. Örnek uygulamada CONTACT.ttf font stilinde 4 tane www.serefakyuz.com çizdirilmekte. Yazılacak metin üzerindeki işlemler ChangeableText nesneleri üzerinden yapılır. Ben de öyle yaptım zaten. ChangeableText nesnesinin metnini oluştururken vermek yerine setText(“www.serefakyuz.com”) fonksiyonu ile verdim. Bu kod bloğunun hemen altında, metni döndürme işlemi(setRotation) gerçekleştirdim. Sonuçta da ekranda yukardaki resimde gördüğünüz şekil oluşturuldu.
[cc lang=’java’]
package www.serefakyuz.com;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.text.ChangeableText;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.opengl.font.Font;
import org.anddev.andengine.opengl.font.FontFactory;
import org.anddev.andengine.opengl.texture.BuildableTexture;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.ui.activity.BaseGameActivity;
import android.graphics.Color;

public class creatingFontActivity extends BaseGameActivity
{
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
private Camera camera;
private ChangeableText cText1,cText2,cText3,cText4;
private BuildableTexture bTexture;
private Font font;

public Engine onLoadEngine()
{
camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
final EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
engineOptions.getTouchOptions().setRunOnUpdateThread(true);
Engine engine = new Engine(engineOptions);

return engine;
}

public void onLoadResources()
{
if(this.bTexture==null)
{
this.bTexture = new BuildableTexture(512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
}
else
{
this.bTexture=null;this.bTexture = new BuildableTexture(512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
}
this.font = FontFactory.createStrokeFromAsset(this.bTexture, this, “gfx/CONTACT.ttf”, 40, true, Color.WHITE, 2, Color.rgb(97, 134, 147));

mEngine.getTextureManager().loadTexture(bTexture);
mEngine.getFontManager().loadFonts(font);
}

Scene scene;
public Scene onLoadScene()
{
this.mEngine.registerUpdateHandler(new FPSLogger());
this.scene = new Scene();
this.cText1 = new ChangeableText(100, 80, this.font, “”, 20);
this.cText2 = new ChangeableText(-92, 250, this.font, “”, 20);
this.cText3 = new ChangeableText(292, 250, this.font, “”, 20);
this.cText4 = new ChangeableText(100, 416, this.font, “”, 20);

cText1.setText(“www.serefakyuz.com”);
cText2.setText(“www.serefakyuz.com”);
cText3.setText(“www.serefakyuz.com”);
cText4.setText(“www.serefakyuz.com”);

cText2.setRotation(90);
cText3.setRotation(-90);

scene.attachChild(cText1);
scene.attachChild(cText2);
scene.attachChild(cText3);
scene.attachChild(cText4);
return this.scene;
}

public void onLoadComplete() {

}
}
[/cc]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir