Son Haberler

Android Oyun Programlama Ders 1: Resim Çizdirme Uygulaması ve Texture, TextureRegion, Sprite Kavramları


Resim çizdirme uygulamasına geçmeden önce, android ile oyun geliştirme aşamasında sürekli kullanılacak kavramlardan Texture, TextureRegion ve Sprite kavramlarını açıklamaya çalışacağım. Ardından uygulamaya göz atabilir, yazının son kısmından da uygulamayı indirebilirsiniz.



Texture: Eklenecek resmin kalıbı gibi düşünülebilir. Her resim için tanımlanmak zorundadır. Resmin boyutu texture tanımlaması esnasında belirtilir.
TextureRegion: Texture ile belirtilen kalıplara resmin yerlerştirilmesini sağlayan nesnedir. Resmin texture’ ı ve yolu bu nesnenin oluşturulması sırasında belirtilir.
Sprite: Oluşturulan TextureRegion’ ı kullanarak resmin ekranda çizdirileceği koordinatları belirten nesnedir.
Kavramların ardından uygulamanın kodlarına göz atalım. Uygulamada iki resmi ekrana çizdireceğiz. Öncelikle Texture’ları, ardından TextureRegionları oluşturup birbirleriyle ilişkilendirdim. Ardından onLoadScene() fonksiyonu içinde Sprite’ları oluşturup this.scene.attachChild(spriteResim1) ifadesiyle ekrana resimleri çizdirdim.
Resimlerin yollarına özellikle değinmek istiyorum. Resimler genelde assets klasörü içine oluşturulan gfx klasörü içine koyulur. Yeni başlayanların da bu alışkanlığı edinmeleri iyi olacaktır.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
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();
       
        spriteResim1 = new Sprite(100, 100, textRegResim1);
        spriteResim2 = new Sprite(400, 100, textRegResim2);
       
        this.scene.attachChild(spriteResim1);
        this.scene.attachChild(spriteResim2);
       
        return this.scene;
    }

   
    public void onLoadComplete() {
       
    }
}
Uygulamayı çalıştırmadan önce eklemeniz gereken son kod bloğu da AndroidManifest.xml dosyasına eklenecek olan
1
<uses-permission android:name="android.permission.WAKE_LOCK"/>
satırıdır. Aşağıdan nereye ekleneceğini görebilirsiniz.
AndroidManifest.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="serefakuz.com"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />
   
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="www.serefakyuz.com.comSpriteOlusturmaActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>
Eğer daha önce android ile proje geliştirmediyseniz eklenecek olan jar dosyalarının eklenme aşaması için tıklayınız.
Ayrıca uygulamanın sonucunu görmek adına bilgisayarınıza emülatör(Sanal mobil cihazı) kurma işlemlerine de buradan ulaşabilirsiniz.
Unutmayın ki eğer yukarıdaki iki paragrafı doğru bir şekilde uygulamazsanız projeniz hatalar verecek çalışmayacaktır. Android ile oyun geliştirme derslerinin ilkinde uygulamaya resim ekleme işlemini görmüş olduk. Uygulamanın kaynak kodunu ve dosyalarını buradan indirebilirsiniz. İyi çalışmalar.

Android Programlama Derslerimizin sıralı haldeki listesini aşağıda bulabilirsiniz.Bu derslere ek olarak yazılı bazı derslerde bulunmaktadır.Bu derslere Android kategorisinden ulaşabilirsiniz.
 

Android Programlama Ders 1:Eclipse ve Android SDK Kurulumu
Android Programlama Ders 2:İlk Android Projemiz ve Çalışma Ortamı
Android Programlama Ders 3:Activity,TextView,EditView Kavramları ve İlk Uygulama
Android Programlama Ders 4:Yeni Ekran Oluşturma,Projeye Ses ve Resim Ekleme
Android Programlama Ders 5:Uygulama İkonunu Ayarlama ve Android Cihazlarda Çalıştırma
Android Programlama Ders 6:Uygulamanın Temasını Değiştirmek ve Splash Ekranı Oluşturmak
Android Programlama Ders 7:Splash Ekranı Oluşturmayı Bitiriyoruz
Android Programlama Ders 8:Uygulamamıza Opsiyon(Option) Menüsü Oluşturmak
Android Programlama Ders 9:ListView Kullanımı
Android Programlama Ders 10:SQLite ile Veritabanı Oluşturma
Android Programlama Ders 11:SQLite’da Veritabanı İşlemleri(Veri Ekleme,Veri Listeleme,Cursor Kavramı)
Android Programlama Ders 12:Bundle’lar ile Activityler Arası Veri Alışverişi
Android Programlama Ders 13:Xml Rss Reader Yapımı ve ASyncTask Örneği
Android Programlama Ders 14:Custom ListView Yapımı ve RssReader’la Eşleştirilmesi
Android Programlama Ders 15:RssReader Uygulamamızı Tamamlıyoruz
Android Programlama Ders 16:Connectivity Manager ile Internet Bağlantısı Kontrolü
Android Programlama Ders 17:İnternetten Cihaza Dosya Download Etmek

Hiç yorum yok:

Yorum Gönder

SmarTeknoloji Designed by SmarTeknolji.blogspot.com Copyright © 2014

TeqrayT LTD ŞTİ. Tema resimleri mammamaart tarafından tasarlanmıştır. Blogger tarafından desteklenmektedir.