Android Oyun Programlama Ders 3: Dokunulan Yerde Resim Oluşturma Uygulaması

Android ile oyun geliştirme derslerinin üçüncüsünde ekrana her dokunulduğunda, dokunulan yerde bir sprite(resim) oluşturacağız. Bunun için yine bir önceki derste olduğu gibi ekrana dokunulduğunda koordinatı yakalayan özel bir metodu kullanacağız.

onSceneTouchEvent metodunu, dokunulan koordinatları tespit etmek için kullanıyoruz. Buradan alınan koordinatları resimEkle fonksiyonuna parametre olarak gönderiyoruz. Fonksiyonun içeriğine bakarsak; fonksiyon, bir ders önce gördüğümüz sprite oluşturmaktan ve attachChild fonksiyonu ile bu resmi ekrana çizdirmekten ibaret. Bu uygulamayı çalıştırdığınızda oluşturulan sarı yüz sabit kalmak üzere her dokunduğunuz yerde mavi yüzler oluşacaktır. Basit ama eğlenceli;) Kodları aşağıdan inceleyebilirsiniz.

NOT: İlk dersteki uygulama üzerinden gittiğim ve o derste uygulamanın dosyalarını da yayınladığım için tekrar uygulamanın dosyalarını yayınlamıyorum. O derse buradan giderek dosyaları indirebilirsiniz.

[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.scene.Scene.IOnSceneTouchListener;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.opengl.texture.Texture;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
import org.anddev.andengine.ui.activity.BaseGameActivity;

public class comSpriteOlusturmaActivity extends BaseGameActivity
{
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
private Camera camera;
Texture textureResim1, textureResim2;
TextureRegion textRegResim1, textRegResim2;
Sprite spriteResim1, spriteResim2;

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()
{
textureResim1=new Texture(128,128,TextureOptions.BILINEAR_PREMULTIPLYALPHA);
textureResim2=new Texture(128,128,TextureOptions.BILINEAR_PREMULTIPLYALPHA);

textRegResim1 = TextureRegionFactory.createFromAsset(textureResim1, this, “gfx/blueSmileIcon.png”, 0, 0);
textRegResim2 = TextureRegionFactory.createFromAsset(textureResim2, this, “gfx/yellowSmileIcon.png”, 0, 0);

mEngine.getTextureManager().loadTextures(textureResim1, textureResim2);
}

Scene scene;
public Scene onLoadScene()
{
this.mEngine.registerUpdateHandler(new FPSLogger());
this.scene = new Scene();

spriteResim2 = new Sprite(400, 100, textRegResim2);

this.scene.setOnSceneTouchListener(new IOnSceneTouchListener()
{
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent)
{
if(pSceneTouchEvent.isActionDown())
{
resimEkle(pSceneTouchEvent.getX() – textureResim1.getWidth()/2, pSceneTouchEvent.getY() – textureResim1.getHeight()/2);
}
return true;
}
});
this.scene.attachChild(spriteResim2);

return this.scene;
}

public void onLoadComplete() {

}

private void resimEkle(float x, float y)
{
spriteResim1 = new Sprite(x,y, textRegResim1);
this.scene.attachChild(spriteResim1);
}

}
[/cc]

Bir cevap yazın

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