AIR for Android ile internet bağlantısını sorgulamak ( Adobe Air detect for internet connection )
Yazım tarihi: Mayıs 14, 2012 Filed under: ActionScript | Tags: AIR, Andorid Development, Android game development, check for internet connection, internet bağlantısını öğrenme AIR Android, Mobile Leave a comment »Android için ya da diğer mobil cihazlar için uygulama geliştiriyorsak uygulamamızın temel ihtiyaçları olabilir. Bunlar internet bağlantısını kontrol etmek, GPS kontrolleri, MACID gibi bir çok şeyi elde etmek isteyebiliriz. Bu gibi durumlarda Flex SDK ve AIR SDK bize bir çok yenilik sağlıyor aslında. Native uygulama geliştirmek yerine daha hızlı daha kolay ve daha anlaşılır bir şekilde mobil uygulamalar geliştirebilirsiniz. Tek şartınız kurulan cihazda AIR Runtime kurulu olması gerekiyor (bu sadece Android cihazlar için geçerli.) Diğer taraftan IOS tabanlı uygulamalar ve oyunlarda ise hiç bir şekilde ek bir plug-in’e ihtiyaç duyulmuyor. Native kodlar gibi derlenip .ipa çıktısı verebiliyor.
Kısaca üstün körü bir şekilde AIR for Mobile’dan bahsettikten sonra asıl konumuz olan internet bağlantısını kontrol etmeye gelelim. Bunun için ilk olarak yapmamız gereken belli başlı ayarlar bulunuyor. İlk olarak Air SDK’den aircore.swc dosyamızı dahil etmemiz gerekiyor. Bunun için şu adımları izleyin.
İlk olarak projemizi açalım. File > new > AIR for Android seçin daha sonra aşağıdaki ayarlara bir göz atın.
C:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR2.6\frameworks\libs\air klasöründe aircore.swc’nin olduğundan emin olun. Daha sonra Flash Professional’a geçip şu adımları izleyin;
File > Publish Setting > Sağ üst köşedeki ikinci anahtar simgesine tıklayın > Açılan pencerede -Library Path- sekmesine tıklayın > Artı simgesine tıklayın, Daha sonrasında -Flash player ikonuna tıklayın (küçük beyaz f işareti) Yukarıda belirttiğim dizine gidin ve oradan aircore.swc bulun ve ekleyin. Daha sonrasında aşağıdaki kodları yazın;
// uygulama için gerekli kütüphaneleri uygulamaya dahil ediyoruz.
import air.net.*;
// monitor ibaresi bize internet bağlantısının olup olmadığını sağlar.
var monitor:URLMonitor = new URLMonitor(new URLRequest('http://serhatsezer.wordpress.com'));
// bir event'e bağlayıp akışı kontrol etmemizi sağlayan fonksiyona gönderir.
monitor.addEventListener(StatusEvent.STATUS, netConnectivity);
// yaptığımız işlemleri başlatır.
monitor.start();
function netConnectivity(event:StatusEvent):void
{
// eğer internet bağlantısı sağlınıyorsa true, sağlanmıyorsa false değeri dönderir.
if(monitor.available)
{
trace("internet bağlantısı var.");
}
else
{
trace("internet bağlantısı yok.");
}
}
İhtiyaç duyabileceğiniz kaynaklar;
http://cookbooks.adobe.com/post_Detecting_the_network_connection_type_with_Flex_4_-18791.html
http://www.actionscript.org/forums/showthread.php3?t=261165
http://stackoverflow.com/questions/9671678/adobe-air-check-for-internet-connection
http://stackoverflow.com/questions/9872348/adobe-air-detect-if-connection-is-wifi-3g-or-edge
SQL ile Update
Yazım tarihi: Mayıs 7, 2012 Filed under: C#, SQL | Tags: SQL server update, c# veritabani guncelleme Leave a comment »University adında bir veritabanım var ve bu veritabanının içinde CampusInfo adında bir tablomuz yer alıyor. Bu tablonun içinde CampusName ve CampusId alanları(rows)lar var. Daha sonrasında bu tapolaların içindeki verileri güncelleyebilmemiz için UPDATE etmemiz gerek. Yanlız bu noktada dikkat edilmesi gereken bir nokta var o da hangi veriyi güncelleyeceğimizdir. Bunun için ise yardımımıza CampusId yetişiyor…
SQL İfadesi
UPDATE CampusInfo SET CampusName=YeniVerimiziGiriyoruz WHERE CampusId=HangiIDverisiGuncellenecek
İlk satırda yani SET CampusName kısmında veritabanından sadece hangi alandan veri güncelleyeceğimizi seçiyoruz. WHERE CampusId kısmında ise Hangi ID nosuna sahip veriyi güncelleyeceğimizi belirliyoruz.
Random Değerler Üretmek (Shuffle Array)
Yazım tarihi: Nisan 24, 2012 Filed under: ActionScript | Tags: actionscript shuffle, array, random değerler, shuffle, suffleArray Leave a comment »Actionscript projelerimizde gerek dinamik , gerekse statik yani kod ile oluşturduğumuz dizilerde ya da dışarıdan gelen dataları random çekme gibi bir ihtiyaç duyabiliriz. Bunun için yapmamız gereken random değerleri üretmek olacaktır. Bunun için Math.random() sınıfı kullanarız. Fakat datalarımızı rastgele çekebilmek için belli bir yapıyı kullanmamız gerekir. Datalarımızı bir fonksiyona çekeriz ve bu fonskiyonda belli bir algoritmada işlemlerimizi gerçekleştiririz.
İlk olarak fonksiyona argüman olarak bir array tanımlarız ve bu arrayin içindekileri kontrol edebilmek için tersden bir for döngüsüne sokarız. Tersden kastım dizinin boyutu kadar azalmasını sağlamak. 10..9..8.. gibi… Ayrıca random sayıları elde edebilmek içinse bir adetde randım sayı üretici yapmamız gerekiyor. Bunun içinde basit bir işlem yapıcaz argüman olarak sayı vericez ve bunu Math.random ile çoğaltacak bu kadar basit. Kısaca koda geçelim o daha iyi anlatacaktır ve daha iyi anlayacaksınızdır.
function getRandom(num:int):int
{
return Math.floor((Math.random() * num));
}
function shuffleArray(array:Array):Array
{
for(var i:int = array.length; i > 1; i--)
{
var j:int = getRandom(i);
var tempArray:String = array[j];
array[j] = array[i-1];
array[i-1] = tempArray;
}
return array;
}
Şimdi kısaca koddan bahsedecek olursak; j değişkeni getRandom() metoduna gönderiyor ve ordan bize rastgele bir sayı üretiliyor. Daha sonra biz bu sayıları kullanarak arrayden rastgele elemanlar alıyoruz. Örneğin 5. indeksdeki bir değeri alıyoruz. Daha sonrasında ise bunu tempArray adındaki bi değişkene atıyoruz. Bunu aşağıdaki son elemana atıyoruz. Bu sayede sürekli karışık verileri elde etmiş oluyoruz. Kullanımı ise aşağıdaki gibi olmalıdır.
var array:Array = new Array("xx","yy","bb","cc","qq","ee","bn","jjk","üü","oo","ee","11","222");
var a:Array = shuffleArray(array);
trace(a);
C# StringBuilder
Yazım tarihi: Nisan 16, 2012 Filed under: C# | Tags: c# string birleştirme, c# stringbuilder, string contains, xml string parser Leave a comment »Yapılan programlarda bellek ve bellek yönetimi önemli bir yer tutar. Bu ve bunun gibi durumlarda performans ararız ve bunun için bir şeyler yapma ihtiyacını buluruz programımızda. Bunun için c# StringBuilder adında güzel bir sınıf oluşturmuş ve string ile çalışmamızı kolaylaştırmış. Stringlerimizi tekrardan isteyip + (artı) operatörüyle bağlamak yerine StringBuilder sınıfının Append özelliği ile stringlerimizi ekleyebiliyoruz.
Örneğin Sepet.cs adında bir Struct sınıfımız olsun bu sınıf içerisinde sırasıyla sepetNo, fiyat, adet şeklinde üç adet int değeri taşıyan değişkenlerimiz olsun. Daha sonra Program.cs tarafında bu sınıfdan çağrışım yapabiliriz.
Sepet.cs
internal struct StringMemory
{
internal string adi;
internal string soyadi;
internal byte yasi;
}
Program.cs Stringlerimizi birleştireceğimiz classımız.
StringBuilder sb = new StringBuilder();
sb.Append("Adı
");
sb.Append(sm.adi);
sb.Append("Soyadı
");
sb.Append(sm.soyadi);
sb.Append("Soyadı
");
sb.Append(sm.yasi);
Console.WriteLine(sb);
Console.ReadKey();
Bunu neden kullandık ?
Verdiğimiz String değerler bilgisayarın steak bölgesinde tutuluyor. Şimdi bu değerlerden performans sağlayabilmek için kodumuzu minumuma indirmemiz gerekiyor. Bunun için StringBuilder bu işimizi görüyor.
C# ile Region kullanımı
Yazım tarihi: Nisan 12, 2012 Filed under: C# | Tags: C#, c# ile region, region, syntax Leave a comment »Örnek vermek gerekirse bir alışveriş sitesini ele alalım. Bu alışveriş sitesinde sırayla; Sepet işlemleri, sepet doldurma, sepet boşaltma, sepete ürün ekleme gibi bir çok işlemi yapan bir Basket adında bir class dosyamız olsun ve sepet ile ilgili tüm değişiklikleri bu class içerisinden halledelim. Fakat kodlarımızı ne kadar fonksiyonel yaparsak yapalım yani her işlemin bir fonksiyonu olsa da çoğu zaman başka işlerlemlerde yapabiliriz. Bu gibi durumlarda kodlarımızı üstüne comment yazarız bu bir nebze olsada işimizi çözer fakat kodlarımızın sağ kısmında kapattığımızda herhangi bir açıklama yapmaz bize.
Bu gibi durumlarda kodlarımızı kapamamıza rağmen hangi kapalı olan kodun ne iş yaptığını bilmeyiz bu gibi durumlarda karmaşıklık olur ve altından kalkılmayacak şeyler çıkar ortaya bu gibi durumlarda bunu engelleyebilmek için #region kullanırız. Region açmak için diyezle birlikte #region ibaresini kullanırız. Bitmesini ise #endregion şeklinde sağlarız.
Kodların başlangıç yerine #region bitiş yerine ise #endregion ibarelerini kullanırız. Eğer #endregion ifadesini kullanmazsak #region başlangıç noktasından süslü parantezin en sonuncusuna kadar alır. Bir şekilde rezerve ediyoruz bu şekilde.
Örnek kullanımı hakkında ;
ArrayList Kullanımı
Yazım tarihi: Nisan 11, 2012 Filed under: C# | Tags: array, arraylist, arraylist object type, C#, collection, diziler, kolleksiyonlar Leave a comment »c# ile Array kullanımında objelere değer sayısı atamamız gerekir. Bu gibi durumlarda int,string,double,byte,long vs. gibi yapıları kullanırız ve yapıların boyutlarını belirtirken köşeli parantezler içerisine [10] gibi değerler gireriz. Aşağıda array kullanımını ve arrayList kullanımının farkını anlatmak adına bir adet array ve arraylist oluşturuyorum.
string[] isimler = new string[3]{"Serhat","Sezer","Developer"};
bu şekilde çıktı alabilmek için yapmamız gereken tek şey. isimler[0] gibi ulaşabiliyoruz. Fakat alışveriş sepeti gibi uygulamalarda kullanıcının ne kadar ürün ekleyebileceğini bilmediğimiz için dinamik bir array oluşturamıyoruz. Bunun için ArrayListleri kullanabiliyoruz.
namespace ArrayList_Kullanimi
{
class Program
{
static void Main(string[] args)
{
OrnekArrayList();
}
static void OrnekArrayList()
{
// kolleksiyon sınıfı oluşturulur.
ArrayList koleksiyonlar = new ArrayList();
// Kolleksiyona Object türünde değerler eklenir.
koleksiyonlar.Add("Serhat Sezer");
koleksiyonlar.Add(20);
koleksiyonlar.Add(new DateTime(17,2,2));
// Koleksiyon elemanlarına, dönüşüm(cast) yaparak erişilir. Çünki koleksiyon içerisinde Object türüne çevirerek oluşturlur ve kullanılır.
string adi = (string)koleksiyonlar[0];
Console.WriteLine("Koleksiyondaki 1. Elemana erişildi\n " + adi);
// Koleksiyondaki elemanların tümüne erişilir : herhangi bir döngü türü ile olabilir.
Console.WriteLine("Kolleksiyondaki bütün elemanlara erişebilirsiniz...");
foreach(object item in koleksiyonlar)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
ArrayList yapısı bize birden fazla veritipini eklememize olanak sağlıyor. Yani bir ArrayList objesinin içerisine string,double,long,int,uint,short gibi bir çok özellik ekleyebiliyoruz. Bunu yaparken ArrayList’in Add() metodunu kullanıyoruz. Fakat bu eklediğimiz nesneleri kullanabilmek için (türüne göre – int ,string , double- vs) tür dönüşümü yapmamız gerekiyor.
Yukarıdaki örnekte görüldüğü gibi 1. indekse sahip olan eleman 20 sayısını barındırıyor, Biz bunu kullanabilmek için 20 sayısını stringe çevirip işlememiz gerekiyor bunun için yapmamız gereken yol;
string yasi = (string)kolleksiyonlar[1];
Yukarıda yaptığımız kodda ise aldığımız number bir değeri string veri tipine çevirebiliyoruz.
Hexadecimal renk kodlarını as3′e uyarlamak
Yazım tarihi: Nisan 3, 2012 Filed under: ActionScript | Tags: as3 dilimleme, colortransform, dynamic color change as3, slice Leave a comment »Yapılan projelerde bazı durumlarda, alt tarafta gizli bir işlem yapmak isteyebiliriz. Bu gibi durumlarda tasarıma uygun bir yerine, uygun bir şekilde saklanması, kamufile olması şart. Bunun için de renk kodlarını, varsa yazı stillerinin aynı olması gerekiyor. Böyle bir uygulama yapma ihtiyacı duydum ve dosylaarın Xml’den gelmesi gerekiyordu. Fakat renk kodlarını actionscripte uyarlamak “müşteri” tarafında biraz zordu o yüzden renk kodunu photoshopta alıp xmle girmesi gerekiyordu fakat photoshoptaki renk kodunu actionscript kabul etmiyordu sistem olarak bu durumda aşağıdaki slice metodunu kullanarak bu işlemi gerçekleştirdim.
var color:String = "#FFCC00";
if(color.charAt(0) == "#")
{
color = "0x" + color.slice(1);
var ct:ColorTransform = new ColorTransform();
ct.color = uint(color);
bg_mc.transform.colorTransform = ct;
}
Burda yaptığımız mantık ise slice metodu string karakterler içerisinde dilimleme işlemini gerçekleştiriyor. Yukarıdaki renk kodunun ilk değeri # (diyez) içeriyorsa aşağıdaki işlemleri gerçekleştir diyoruz. Daha sonra ise diyez işaretini atla ve daha sonraki dilimi getir ve ekle diyoruz. Daha sonra dinamik renk kodları ile movieclip rengimizi değiştiriyoruz. Bunu yaparkende ColorTransform sınıfını kullanıyoruz. String olarak çıktı alacağı için bu değeri biz uint değere aktarıp daha sonra movieclibe atıyoruz bu aldığımız değeri.
Javascript ile Attributelere Ulaşmak
Yazım tarihi: Şubat 17, 2012 Filed under: JavaScript | Tags: attr, javascript attributes, javascript prototype, jQuery Leave a comment »Dinamik ya da dökümanızda eklediğimiz html elemanlarının attributelerine ulaşmak isteyebiliriz bazen bu gibi durumlarda; attirubte değerini alıp değiştirebiliriz.
Html sayfamızda img etiketiyle bir resim gömdüğümüzü varsayarak devam ediyorum sadece javascript kodları yazıyorum
var imgAttr = document.getElementById('resimID').attributes.getNamedItem('class').value;
Burada kodları kısaca açıklamak gerekirse; İlk olarak resmimizin ID vererek ulaşıyoruz. Daha sonrasında ise ID ile ulaştığımız resimlerin attributteslerine ulaşabilmek için “attributes” değerini kullanıyoruz. Daha sonra ulaştığımız attributeslerin değerlerinin ne olduğunu öğrenebilmek için getNamedItem ile ulaşıyoruz. daha sonra value ya da name şeklinde alabiliyoruz.
As3 getChildByName Sorunsalı
Yazım tarihi: Şubat 8, 2012 Filed under: ActionScript | Tags: actionscript 3, as3 getchildbyname sorunu, getChildByName, getChildByname as3 Leave a comment »Actionscript ile uygulama geliştirirken bir çok hatayla karşılaşabilirsiniz. Bunların bazıları dikkat dağınıklığı olsada bazılarıda flashtan kaynaklanabiliyor ve kendimiz bu sıkıntıya çözüm üretmek zorunda kalabiliyoruz. Çözüm için internette de araştırdığımda benimle aynı sıkıntıyı yaşayan bir kaç kişiyi daha gördüm.
Linkage ile oluşturduğum bir objeye statik olarak bir değişken atamak istediğimde içine getChildByName ile ulaştığımda hata ile karşılaşıyordum “undefined property” bunu çözebilmek için yapmam gereken yok ise basit bir yolmuş şöyle ki ;
var box:Box = new Box();
box.name = "box";
box.walk = true;
addChild(box);
var w:Boolean = MovieClip(getChildByName("box") as Box).walk
trace(w);
İlk olarak Box adında Linkagedan yani Libraryimden bir obje çekip sahneye ekliyorum. Daha sonra eklediğim objeme statik olarak içine bi değişken saklıyorum ve bu değişkenle oynuyorum. Bunu kullanmaya çalıştığımda yukarıda bahsettiğim hatayla karşılaşıyordum. Mantık ise şu;
Bir değişken oluşturdum. Boolean değerini sakladı sebebi ise dönen değerin yukarıda belirttiğim gibi boolean bir değer olmasıydı. box.walk = true; eğer string bir değer olsaydı string değer verirdim. Daha sonra ise linkage ile eklediğim objeme ait olduğunu bildiriyorum. as Box bu şekilde demiş oluyorum ki ; Movieclibin içinde Box ile ilgili bir değişkenim var ve bu şekilde o değişkeni çekebilir ve üzerinde oynamalar yapabilirim.
