En son beş notum...
asp.net tanımsız kullanıcılar
|
İnternetten para kazanma yöntemleri
|
|
|
09.02.2010
|
iki veritabanı arasında olmayan sp bulma.
|
iki veritabanı arasında olmayan sp(stored procedure), FN(function), V(view), U(Table) bulunması
Böyle bir yazı yazmamın amacı;
2009 yılına ait bir veritabanı kullanıyorsunuz ve 2010 yılında bu veritananını yeniden oluşturyorsunuz. Ama kullandığınız program (ERP, MRP, vs.) bunları otomatik olarak yapıyor. Fakat siz 2009 yılında bir takım P(stored procedure), FN (function), V(view), U(Table) oluşturdunuz ve bunları yeni açılan veri tabanında olup olmadığının kontrolünü yapıp yeni veritabanına aktarmak istiyorsunuz.
Bu makalemde sizlere bunu anlatacağım. şimdiyekadar muhtemelen kullanmadığınız değişik bir yöntemle yapacağız. EXCEL kullanarak hem iki veritabanındaki farklılıkları bulacağız hemde bu farklılıkları otomatik oluşturacağız.
Sırasıyla Yapmamız gerekenler;
- Öncelikle iki veri tanabı arasında olmayan stored procedure yada function' ları bulan ve table donduren bir function yazacağız.
-
Bunları excel'de listeliyeceğiz
-
Bu stored procedure, function'ların sahip olduğu komut satırlarını bulan bir kod yazağız.
-
Bu kodları EXCEL'de ilgili storedProcedure'un karşılığı olarak getittireceğiz.
-
Saha sonra bir komut satırıyla bunları olmayan veri tabanımızda oluşturacağız.
- SQL programımıza girerek Fonksiyonumuzu hazırlayalım
--ilk veritabanımızdaki tüm kayıtlar getireleceğinden
--ikinci veritabanında karşılığı olmayan stored procedure'ler
--null değer alacaktır. LEFT OUTER JOIN ile iki veritabanını
--ilişkilendiriyoruz.
create function SH_iki_veritabani_arasinda_olmayan_veriler_TABLE (@verininCinsi nvarchar (5))
returns table as
return
(
select
ilkVeriTabani.name as ilkVeriTabani_NAME
,ilkVeriTabani.id as ilkVeriTabani_ID
,ikinciVeriTabani.NAME as ikinciVeriTabani_NAME
,ikinciVeriTabani.id as ikinciVeriTabani_ID from byhasanusta.dbo.Sysobjects as ilkVeriTabani
left OUTER join byhasanustayedek.dbo.Sysobjects as ikinciVeriTabani
ON ilkVeriTabani.name = ikinciVeriTabani.name
where ilkVeriTabani.Xtype = @verininCinsi
)
Burada Sysobjects tablosundan bilgi aldık. Daha önceki dersimizde bu tablonun içeriğini incelemiştik.
-
Şimdi gelelim Excel'e. Bir excel dosyası açalım.
 |
Burada dikkat ederseniz üst tarafta bir componentimiz mevcut. controls
adı altında. Eğer bu sizde ekli değilse, menü çubuğunda sağ tuşa basarak ekleyebilirsiniz.
|
Menü Çubuğunda sağ tuşa basın -> Customize Quick Access Tollbar' ı seçin. Aşağıdaki ekran gelecek ve buradan Controls tool'unu bulup Add' itıklayın. Ok 'e basarak ekranı kapatın.
Controls -> Insert -> ActiveX Controls' un altından bir adet button seçelim. Ve Excel'e ekleyelim. Aşağıdaki gibi bir görüntümüz olacak.
Şimdi Command Button1' i tıklayarak kod editörümüzde geçelim. Kodlamaya geçmeden önce yapmamız gereken EXCEL' e kütüphaneden bir kitaplık eklememiz.
Tools -> References tıklayalım. Burada bize kütüphane listesi açılacak.
Burada microsoft ActiveX Data Object 2.1 Library 'i işaretliyelim. Ve OK butonuna basalım.
Aşağıdaki gibi bir Sub oluşturalım. Ve butonumuzun Click olayına veritabanindaOlmayanSP yazalım.
Public Sub veritabanindaOlmayanSP(veriTabani As String)
'Bağlantı Nesnesi yaratıyoruz
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
'SQL Bağlantısı için string tanımlıyoruz
Dim connstr As String
'SQL Server OLE DB Provider' kullanıyoruz
connstr = "PROVIDER=SQLOLEDB;"
'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olaraj firma değişkeni atadık.
connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
'Bağlantıyı oluşturuyoruz.
connstr = connstr & "Integrated Security=SSPI;"
'Bağlantıyı açıyoruz.
conn.Open connstr
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim cmd As New ADODB.Command
cmd.CommandType = adCmdText
cmd.ActiveConnection = conn
'SQL cümlemizi yazıyoruz
cmd.CommandText = "select * from SH_iki_veritabani_arasinda_olmayan_veriler_TABLE('P') where ikinciVeriTabani_NAME is null"
'dönen satayı bir record sette tutuyoruz
Set rs = cmd.Execute
'bağlantıyı boşaltıyoruz.
Set conn = Nothing
'Record Set'in yapısı excel gibi olduğundan
'içerisindeki bilgiyi direkt istediğimiz
'bir hücreye yapıştırabiliyoruz
Sheet1.Cells(2, 1).CopyFromRecordset rs
End Sub
Private Sub CommandButton1_Click()
veritabanindaOlmayanSP ("byhasanusta;")
End Sub
çalıştırıp sonuca baktığımızda. Ilk veritabanımızda olupta ikinci veritabanında olmayan stored Procedure'ler listelenmiş oldu.
-
Şimdi Tekrar SQL programımıza gelelim ve aşağıdaki stored procedure yazalım ve oluşturalım.
create procedure SH_sp_F_komut_satirlari_getir
@sp_veya_F_ID nvarchar(100)
AS
select text from SysComments where id=@sp_veya_F_ID
-
Şimdi texrar Excel dosyamıza gelelim ve bir Command Button oluşturalım. Ayrıca aşağıdaki Sub'ı yazalım.
Public Sub veritabanindaOlmayanSPKomutsatiriGetir(veriTabani As String)
'Bağlantı Nesnesi yaratıyoruz
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
'SQL Bağlantısı için string tanımlıyoruz
Dim connstr As String
'SQL Server OLE DB Provider' kullanıyoruz
connstr = "PROVIDER=SQLOLEDB;"
'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olaraj firma değişkeni atadık.
connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
'Bağlantıyı oluşturyoruz.
connstr = connstr & "Integrated Security=SSPI;"
'Bağlantıyı açıyoruz.
conn.Open connstr
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim cmd As New ADODB.Command
'Bu sefer komut tipimizi stored procedure olarak değiştiriyoruz
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = conn
'SQL cümlemizi yazıyoruz
cmd.CommandText = "SH_sp_F_komut_satirlari_getir"
'Satırlar arasında döneceğimiz için
'Bir değişken tanımlıyoruz
Dim i As Integer
'storedProcedure atamak için değişkenimiz tanımlıyoruz.
'SQL' de tanımladığımız sp miz bizden parametre isteyecek
'Bu parametreyide Excel'deki satırlardan temin edeceğiz.
Dim spText As String
For i = 2 To 7
spText = Sheet1.Cells(i, 2).Value
cmd.Parameters.Append cmd.CreateParameter("@sp_veya_F_ID", adVarChar, adParamInput, 100, spText)
'dönen satayı bir record sette tutuyoruz
Set rs = cmd.Execute
'İçerisindeki bilgi teksatır döneceğinde ilgili satırın
'karşısına sql'deki kod bloğumuzu yapıştırıyoruz.
Sheet1.Cells(i, 5).Value = rs.GetString()
Set rs = Nothing
cmd.Parameters.Delete ("@sp_veya_F_ID")
Next i
'İşimiz bitince bağlantıyı boşaltıyoruz.
Set conn = Nothing
End Sub
Private Sub CommandButton2_Click()
veritabanindaOlmayanSPKomutsatiriGetir "byhasanusta;"
End Sub
ikinci butonumuza tıklayınca ilgili stored Procedure ait komut satırları sayfa1' de 5. kolona gelecektir. Bundan sonra geriye yapılacak tek bir işlem kalıyor bunları ikinci veritabanımızda oluşturmak.
excel görüntümüz aşağıdaki gibi olacaktır;
"E" sütununda ilgili stored Procedure ait komut satırları yer almaktadır.
-
Gelelim bunları ikinci veritabanımızda oluşturmaya.
Excel dosyamızda üçüncü bir Command Button oluşturalım ve aşağıdaki kodlamayı yapalım.
Public Sub komut_satiri_calistir(firma As String)
'Bağlantı Nesnesi yaratıyoruz
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
'SQL Bağlantısı için string tanımlıyoruz
Dim connstr As String
'SQL Server OLE DB Provider' kullanıyoruz
connstr = "PROVIDER=SQLOLEDB;"
'SHASANUSTA Server'a bağlanıyoruz. Veritabanı olarak firma değişkeni atadık.
connstr = connstr & "DATA SOURCE=SHASANUSTA;INITIAL CATALOG=" & veriTabani
'Bağlantıyı oluşturyoruz.
connstr = connstr & "Integrated Security=SSPI;"
'Bağlantıyı açıyoruz.
conn.Open connstr
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim cmd As New ADODB.Command
'komut tipimizi tekrat text olarak değiştiriyoruz
cmd.CommandType = adCmdText
cmd.ActiveConnection = conn
'Satırlar arasında döneceğimiz için
'Bir değişken tanımlıyoruz
Dim i As Integer
For i = 2 To 7
'SQL cümlemizi yazıyoruz. Bu sefer sql cümlemiz
'E kolonundaki cümlelerimiz olacak.
cmd.CommandText = Sheet1.Cells(i, 5).Value
Set rs = cmd.Execute
'Bilgi amaçlı 3. kolona "ok" yazdırıyorum.
Sheet1.Cells(i, 3).Value = "ok"
Set rs = Nothing
Next i
'İşimiz bitince bağlantıyı boşaltıyoruz.
Set conn = Nothing
End Sub
Private Sub CommandButton3_Click()
'Dikkat!!! stored procedur' leri oluşturacağım
'veri tabanını belirtiyorum.
komut_satiri_calistir "byhasanustayedek;"
End Sub
İşimiz bittiğinde görüntümüz aşağıdaki gibi olacaktır. SQL' de stored procedurlerinizi kontrol edebilirsiniz.
CommandButton1: İkinci veritabanında olmayan stored procedurleri getirdi.
CommandButton2: Bunlara ait komut satırlarını getirdi.
CommandButton3: İkinci veritabanında olmayan stored procedurleri oluşturdu.
Yapacaklarımızın hepsi bukadar. CommandButton1' de "P" parametresi gönderdik "P" parametresi çekeceğimiz verinin procedurlerden oluşacağını gösterir. Eğer function olsaydı "fn" yazardık. Bu şekilde istediğimiz verinin kontrolünü yaptırabiliriz.
yazıya git
|
|
|
|
|
|
01.12.2009
|
Flex nedir?
|
Flex adobe firmasının geliştirmiş olduğu data içeriği açısından flash'dan kuvvetli bir geliştiricidir.
Flex ile data içerikli güzel programlar hazırlayabilirsiniz. Ben flex yazılarımda bir veritabanından veri nasıl alınır ve işlenir bunları anlatacağım.
|
flex ile program geliştirmek çok zevklidir. Kullanımı çok basittir. Makalelerimde sıklıkla veri tabanından veri çekme işini göstereceğim.
|
inventor Crack
yazıya git
|
|
|
|
|
Flash Nedir?
|
Adobe firmasının geliştirmiş olduğu görsel içerik bakımından en güçlü editördür. Bu editör ile güçlü animasyonlar hazırlayabilirsiniz. Action Script 3.0 ile çok güçlü bir program alt yapısı sunmaktadır. Adobe firmasının eskiden oyun animasyonları hazırlamak için çıkardığı flash günümüzde çok güçlü bir yapıya sahiptir.
 |
flash editürünün yeni versiyonu CS4
|
yazıya git
|
|
|
|
|
asp.net nedir?
|
ASP ( Active Server Page ) sayfa uzantısı ".asp" olan asp.dll isimli ISAPI yorumlayıcı tarafından yorumlanması ve kodla istenilen işlemlerin gerçekleştirilmesinden sonra sunucunun istemciye göndermesi mantığı ile çalışıyor. Sunucuların performansını ciddi şekilde etkilemektedir sunucuların üzerinde bir çok asp ile yazılmış sitelerin barındığını düşünürsek eğer sunuculara ne kadar çok yük düştüğünü anlayabiliriz.
 |
İşte programlama editörlerinin bence ağa babası. Profosyenel programlarınızı bu editörle oluşturabilirsiniz. Tabi ki programcılık bilginizin birazcık kuvvetli olması gerekir.
|
yazıya git
|
|
|
|
|
|
25.02.2010
|
AS3 3D fotograf galaresi hazırlama
|
Arkadaşlar nihayet bu yazımıda yazmaya vakit bulabildim.
Şimdi hep birlikte üc boyutlu bir resim galerisi hazırlayacağız. Profesyonel üç boyut olmayacak tabiki ama Mouse yönüne göre resimlerimize hareket yönü belirleyeceğiz.
Bildiğiniz gibi profesyonel uc boyutlar Autodesk Inventor, 3D Max gibi profesonel programlarda hazırlanabiliniyor.
Proje örneğimizi aşağıda görebilirsiniz.
Sırası ile yapacaklarımız.
- Projeye hazırlanış
- Yeni bir flash document oluşturuyoruz.
- Resimlerimizi eklemek için 110x100 boyutlarında bir movie clip oluşturuyoruz
- Bu movie Clip içerisinde yükleyeceğimiz resimler için ayar yapıyoruz. Bu
moviClip her bir resmimiz için tek tek oluşturulacak.
- Yükleme işlemini bildirmek için yükleniyor yazısı.
- Bu movie clip’e resimlerin yüklenmesi için Flash Develop editöründe bir sınıf
oluşturuyoruz.
- Ana sınıfımızı yani projenin oluştuğu kodların olacağı sınıfı oluşturup
işlemlerimizi bu sınıfta yapıyoruz.
- Projeye Hazırlanış.
- Öncelikle bir klasör oluşturalım. Klasörümüzün adı “ucBoyutluResimGalerisi”
olsun.
- Bu klasörün içerisinde “img” ve “efekt” adlı iki klasör oluşturuyoruz.
- “img” klasöremize “.jpg” resimlerimzi yükleyeceğiz. Resimlerimizin kare
boyutlarında ve ölçülerinin 110x110 olmasına dikkat edelim. Böylelikle
ekranımızda daha şık bir görüntü elde etmiş oluruz.
- “efekt” klasörümüzün içerisinde flash içerisinde kullanacağımız tween efektleri
olacak. Bunları buradan
indirebilirsiniz.
- Ve daha sonra oluşturacağımız *.fla, *.as dosyalarımızda
“ucBoyutluResimGalerisi” klasöründe bulunacaklar.
-
Yeni bir flash document oluşturuyoruz.
- File -> New menüsünden yeni bir flash document oluşturalım
- Dokümanımızın büyülüğünü width=1000px height=500 px olarak ayarlayalım.
- Zemin rengini siyah yapalım.
- Dosyamızı “ucBoyutluResimGalerisi.fla” olarak kayıt edelim.
- Resimlerimizi eklemek için 110x100 boyutlarında bir movie clip oluşturuyoruz
- Oluşturduğumuz flash dokümanımızın içerisinde Araçlar menüsünden “rectangle” aracını kullanarak 110x110 boyutlarında bir kare oluşturuyoruz. Bu kare bizim her bir resmimiz için yazacağımız kodlarla yeni bir örneği oluşacak.
- Bu karenin çizgi rengini beyaz olarak ayarlıyoruz ve kalınlığını 5 yapıyoruz.
- Çizgi içerisinde kalan kısmı rengini koyu gri yapabiliriz. Bu alana resim geleceğinden rengi çok önemli değil.
- Oluşturduğumuz kareyi komple seçerek movieClip’e dönüştüroyoruz. İsmini fotoBack olarak belirliyoruz.
- Movie Clip’ dönüştürürken Registration noktasını orta nokta yapıyoruz. Bunu yapmamızın nedeni resim büyüdüğünde orta noktadan büyümenin sağlanması içindir.
- "Export for Action script" seçeneğini işaretleyip Linkage ismini FotoBack olarak belirliyoruz.
- "Enable guides for 9 –slice scaling" seçeneğini işaretliyoruz. Bunun sebebi belirlediğimiz noktalardan itibaren resmi büyütmesini istememizdir.
- Ok tuşuna basıp MovieClip oluşturuyoruz.
- Bu movie Clip içerisinde yükleyeceğimiz resimler için ayar yapıyoruz. Bu moviClip her bir resmimiz için tek tek oluşturulacak.
- Oluşturduğumuz “fotoBack”isimli movieClip mizin içerisine girip kesikli çizgileri çizgilerimizin kenarına doğru çekiyoruz.
- Ekleyeceğimiz resimleri orta alana ekleyeceğimizden bu alanı da movieClip’e dönüştürüyoruz.
- İsmini "resimPano" olarak ayarlıyoruz ve registration’u orta nokta yapıyoruz.
- resimPano movieClip’i seçip “Instance Name” ini resimPano olarak ayarlıyoruz.
- Yükleme işlemini bildirmek için yükleniyor yazısı.
- fotoBack MovieCLip’e yeni bir “layer” açıp fotoBack movieClip’ imizin üstüne gelecek şekilde “Dynamic Text” ekliyoruz.
- Bunun Instance Name’i “yuklemeYazi” olarak ayarlıyoruz.
- Bu movie clip’e resimlerin yüklenmesi için Flash Develop editöründe bir sınıf oluşturuyoruz.
- Flash develop editörümüzü açalım. File -> New -> AS3 Document’ i seçelim ve yeni bir class oluşmasını sağlayalım.
- Oluşturduğumuz sınıfı .fla dosyamızın bulunduğu klasöre kayıt edelim. İsmini "fotoBack.as" verelim. Bunun nedeni flash içerisinde oluşturduğumuz Movie Clip ‘in ismi ile aynı olmak zorundadır.
- Movie Clip içerisine fotograf yükleme işlemi yaptıracağımız kodlarımızı yazalım. Kodların içerisinde gerekli açıklamaları bulabilirsiniz.
fotoBack.as
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.filters.BlurFilter;
import flash.net.URLLoader;
import flash.net.URLRequest;
/**
$(CBI)* ...
$(CBI)* @author ...
$(CBI)*/
public class fotoBack extends MovieClip
{
private var path:String; //yükleyeceğimiz resim dosyalarımızın yolunu belirtmek için kullanacağız.
private var ldr:Loader; //resim yüklemek için Loader nesnesi tanıtıyoruz.
//yapıcı sınıfımız "constructor" bu sınıfın bir örneği oluştuğunda
//direkt olarak yapıcı sınıf çalışacaktır.
//Bu sınıftan örnek oluşturulurken bizden path bilgisi bekleyecektir.
public function fotoBack(path:String):void
{
this.path = path; //yukarıda tanımladığımız path değişkenimize dışarıdan gelen path' i atıyoruz.
ldr = new Loader (); //Loader nesnesinin örneğini oluşturuyoruz.
ldr.load (new URLRequest(path)); //URLrequest ile path bilgisi bekliyoruz. Ve gelen adrsteki resmi yüklediyoruz.
ldr.contentLoaderInfo.addEventListener (Event.COMPLETE, resimYukle);//Resim yükleme olayı tamamlandığında resimYukle fonsksiyonunu çalıştıryruz.
ldr.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, resimYukleniyor); //resim yüklenirken nekadarının yüklendiğini oluşturduğum dynamic
//text dosyamızda gösteriyoruz.
}
private function resimYukleniyor (evt:ProgressEvent):void
{
//Resimlerimiz yüklenirken ekrana nekadar yüklendiği bilgisini gösteriyoruz.
yuklemeYazi.text = String( Math.round ((evt.bytesLoaded / evt.bytesTotal) * 100));
}
private function resimYukle (evt:Event):void
{
//yükleme işlemi bitince ekrandaki yazıyı kaldırıyoruz.
yuklemeYazi.visible = false;
ldr.x = -55; //Oluşturduğumuz fotoBack MovieClip mizin registration noktası ortası olduğundan
ldr.y = -55; //yüklenen resmimizi 0 noktasına almasını sağlıyoruz.
ldr.width = 110; //fotoback nesnemiz in boyutları 110 olduğundan yüklediğimiz resmin
ldr.height = 110; //110 height ve width ölçülerinde olmasını sağlıyoruz.
resimPano.addChild (ldr); //resmizi resimPano instance name'li nesnemizin içerisine yüklüyoruz.
}
}
}
- Ana sınıfımızı yani projenin oluştuğu kodların olacağı sınıfı oluşturup işlemlerimizi bu sınıfta yapıyoruz.
- Yeni bir as3 document oluşturuyoruz. Bu dükümanımızda artık resim yükleme ve Mouse yönüne göre hareketlerimizi yapıyoruz.
- Oluşturduğumuz sınıfı “ucBoyutluResim.as” olarak .fla doyamızın bulunduğu klasöre kayıt ediyoruz.
- Flash Dokümanımızın class ismini "ucBoyutluResim.as" olarak belirliyoruz.
ucBoyutluResim.as
package
{
import flash.display.MovieClip;
import efekt.*;
import efekt.easing.*;
import flash.events.*;
/**
$(CBI)* ...
$(CBI)* @author ...
$(CBI)*/
public class ucBoyutluResim extends MovieClip
{
var container:MovieClip; //21 adet resmimiz olacağından bu resimleri bir movie clip içerisine eklemek için
//container movie clibi tanımlıyoruz.
var count: Number = 0; //Bu sayac resimlerimizin ilk satırda 7 adet yüklendikten sonra sıfırlaması için tanımlıyoruz.
var tiklanan:MovieClip; //tıklanan movieClip'i daha sonra bulunmasını sağlama için tanımlıyoruz.
public function ucBoyutluResim ():void
{
container = new MovieClip();
container.x = 100;
container.y = 100;
addChild(container);
for (var i:int = 1; i <21 ; i++) //resimlerimizi eklemek için for döngüsünden yararlanıyoruz.
{
var mc:fotoBack = new fotoBack("imgucBoyut/" + i + ".jpg");//fotoBack nesnemizin örneğini oluşturduk.
//Böylelikle her bir i değeri için fotoBack nesnemiz oluşturulacak ve resimlerimizi container nesnemize eklemiş olcağız.
mc.x = 125 * count; //count değişkeninin modunu aldık. Yani 7'nin katıysa sıfırladık. Buda x ekseninin 7 satırdan oluacağını belirlemiş oluyoruz.
mc.y = 125 * Math.floor (i / 8); //y eksenide 7 satır dolduktan sonra aşağı geçmesi için i nin değerine 8'i böldürüyoruz.
container.addChild (mc);
if (i % 7 == 0)
{
count = 0;
}
else
{
++ count;
}
mc.addEventListener (MouseEvent.ROLL_OVER, mouseUstunde);
mc.addEventListener(MouseEvent.ROLL_OUT, mouseDisinda);
mc.addEventListener(MouseEvent.CLICK, tiklandi);
}
addEventListener (MouseEvent.MOUSE_MOVE , mouseOynuyor);
}
private function mouseOynuyor(evt:MouseEvent):void
{
var yerX:Number = mouseX / 1000;
var yerY:Number = mouseY / 500;
trace (yerX, yerY);
TweenLite.to (container, 2, {rotationY:(-60+(125*yerY)), rotationX : (60 -(125*yerX)),ease:Expo.easeOut } );
}
private function mouseUstunde(evt:MouseEvent):void
{
var mc:MovieClip = evt.currentTarget as MovieClip;
if (tiklanan != mc)
{
mc.alpha = 0.2;
}
}
private function mouseDisinda(evt:MouseEvent):void
{
var mc:MovieClip = evt.currentTarget as MovieClip;
if (tiklanan != mc)
{
mc.alpha = 1;
}
}
private function tiklandi(evt:MouseEvent):void
{
var mc:MovieClip = evt.currentTarget as MovieClip;
mc.alpha = 1;
if (tiklanan == null)
{
container.addChild (mc);
TweenLite.to (mc, 0.5, { scaleX:5, scaleY:5,ease:Expo.easeInOut} );
tiklanan = mc;
}
else if (tiklanan == mc)
{
TweenLite.to (mc, 0.5, { scaleX:1, scaleY:1, ease:Expo.easeInOut } );
tiklanan = null;
}
else
{
TweenLite.to (tiklanan, 0.5, { scaleX:1, scaleY:1, ease:Expo.easeInOut } );
container.addChild(mc);
TweenLite.to (mc, 0.5, { scaleX:5, scaleY:5, ease:Expo.easeInOut } );
tiklanan = mc;
}
}
}
}
yazıya git
|
|
|
|
|
|
21.01.2010
|
Flash AS3 ile XML den veri çekme.
|
Flash'da dinamik veri oluşturmak mümkündür. Dinamik veri derken gösterilecek bilginin sürekli güncel kalması ve bu güncellemeninde otomatik olarak bir dosyadan yapılmasının sağlanması olayıdır.
Birlikte bir uygulama yapacağız ve bu uygulamayla XML dosyadan resimleri çektireceğiz.
Flash' da kod yazmak için kolaylık olması açısında flash develop editörünü kullanıyorum. Fikir sahibi olmak isterseniz
Buradan bakabilirsiniz.
Örnek projemiz:
Projeye hazırlık.
- Flash dosyasının hazırlanışı
- Flash Develop dosyasının hazırlanışı
- XML dosyamızı hazırlanışı
- Resimlerin ayarlanışı
- Kodlamaya geçiş
Flash dosyasının hazırlanışı
Öncelikle flash programımızı açıyoruz. Yeni bir document oluşturuyoruz. Bu dosyayı xmlVeriCekme.fla olarak kayıt ediyoruz.
Not:Kayıt ettiğimiz dosyanın bulunduğu klasörde XML, .as, .fla dosyalarımız olacak.
Flash Develop dosyasının hazırlanışı
-
Flash develop editörümüzü açıyoruz.
-
File -> New -> AS3 Document seçiyoruz. Gördüğünüz gibi yeni bir as3 dosyası oluşturuldu.
-
public class'ımızı public class xmlVeriCekme extends MovieClip şeklinde ayarlıyoruz.
-
Akışı başlatacak fonksiyonumuzu oluşturuyoruz. public function xmlVeriCekme ():void
- dosyamızı .fla dosyamızın bulunduğu klasöre kayıt ediyoruz.
- flash dökümanımıza gelerek class ismini as dosyamızın ismini veriyoruz. Yani xmlVeriCekme olarak tanıtıyoruz.
Gördüğünüz gibi .fla ve .as dosyalarımızı oluşturduk.
- XML dosyamızın hazırlanışı
XML dosyamızı hazırlamak için notepad editörünü kullanabiliriz. Yapıyı aşağıdaki gibi hazırlayalım.
XML dosyamız :
Dosyamızı .as, .fla dosyalarımızın yanına xmlVeriCekme.xml olarak kayıtedelim. Ben burada sadece 4 adet resim için XML dosyası hazırladım dilerseniz bu sayıyı artabilirsiniz. Hiç problem olmayacaktır.
ayarladığımız 4 adet resmi dosyalarımızı koyduğumuz klasörün altında img klasörü açalım ve buraya atalım. Resimlerimizin aynı boyutta olması daha iyi olacaktır.
klasör yapımız aşağıdaki gibi olacaktır.
Sıra geldi kodlamaya geçiş.
- Özetle bunları yapacağız;
- XML dosyamızı yükleyeceğiz
- XML dosyamızın içerisindeki dosya yolunu kullanarak loader nesnesi ile image dosyalarımızı çekicez
- Bunları teker teker sahnemize eklyeceğiz.
- Ve animasyon yapacağız.
- Flash develop editörümüze gelelim. Aşağıdaki kodlamayı yapalım. Kod' ların yanında açıklamalarını yazdım.
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class xmlVeriCekme extends MovieClip
{
public var xmlResim:XML; //genel kullanım için öncelikle bir xmlResim Değişkeni tanımlıyoruz.
public var xmlResimUzunlugu:int; //xmlResim nesnemizin uzunluğunu tutmak için tanımlama yaptık.
public var frame:uint = 0; //frame' i dinlemek için "frame" değişkeni tanımlıyoruz ve 0' ıncı kareden başlamasını istiyoruz.
public var resimLoader:Loader; //Resim yükleme için Loader nesnesi tanımlıyoruz.
public var a:uint = 0; //Bu değişken ile kaçıncı resimde olduğumuzu tespit edeceğiz.
public var rootPath:String; //XML dosyamızdaki resimlerin hangi klasörden çekileceğini bulmak için tanımlanan string değişkeni.
public function xmlVeriCekme ():void
{
//xml dosyamızı çağırmak için URLLoader nesnesi tanımlıyoruz.
//URLLoader : text tabanlı dosyaları çağırmak amaçlı kullanılır.
//Loader : resim içerikli dosyaları (.jpg, .png) gibi çağırmak için kullanılır.
//URLLoader dosyasına request nesnesini atıyoruz.
//URLRequest içeriğindeki dosyamızı URLLoader nesnesine taşır.
var xmlLoader:URLLoader = new URLLoader (new URLRequest("image/ornekler/xmlVeriCekme.xml"))
//xmlLoader nesnemiz yüklendiğinde ilgili fonksiyonu çalıştırıyoruz
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaderYuklendi);
}
public function xmlLoaderYuklendi (evt:Event):void
{
//Tanımladığımız xml nesnesine xmlLoader'a yüklenen dosya içeriğini atıyoruz.
//Bunun için yeni bir XML nesnesi oluşturduk (new XML)
//Şu andan itibaran xmlResim nesnemizin içerisinde bizim XML dosyamızın içeriği bulunmakta.
xmlResim = new XML (evt.target.data);
//XmlResim dosyamızın içindeki node' ların uzunluğunu xmlResimUzunlugu değişkenimize atıyoruz.
xmlResimUzunlugu = xmlResim.node.length();
//Resim klasörüne erişiyoruz.
rootPath = xmlResim.@rootPath;
//Bu aşamda resimlerimize animasyon vermiyeceksek for döngüsü ile sahnemize eklyebiliriz.
//Fakat bu örnekte animasyon kullanacağımızdan Yani resimleri teker teker görmek istediğimizden dolayı
//ENTER_FRAME Event' ından yararlanacağız.
//Sahneye EnterFrame Event tanımlıyoruz.
addEventListener(Event.ENTER_FRAME, resimleriEkle)
}
function resimleriEkle(evt:Event):void
{
frame += 1; //sahnemiz hareket halinde iken her seferinde frame değişkenimizi 1 arttıryoruz.
if (frame == 1) //frame bir de dosya yüklemesi yapacağız.
{
//Tanımladığımız resimLoader nesnesinden yeni bir tane oluşturup dosyamızın yolunu bildiriyoruz.
// dosyamızın yolu resimXML nesnemizde kayıtlı.
resimLoader = new Loader () ;
resimLoader.load(new URLRequest(rootPath + xmlResim.node[a].@path));
//yüklenen resmi sahneye eklemek için resimYuklemeTamam fonksiyonundan yararlanıyoruz.
resimLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, resimYuklemeTamam);
}
if (frame == 120) //yani 5 sn. sonra yüklediğimiz dosyayı kaldıracağız.
{
//Yüklenen resmi sahneden kaldırıyoruzki yeni resim geldiğinde üstüne binmesin.
removeChildAt(0)
//Bir sonraki resmi yüklemek için a değişkenini 1 arttırıyoruz.
a += 1;
//frame' i sıfırlıyoruz ki olaylar tekrarlansın.
frame = 0;
//eğer a değişkeni xmlResim dosyamızın node uzunluğuna geldiyse.
//yani resimler bittiyse. Tekrar baştan başlatıyoruz.
if (a == xmlResimUzunlugu)
{
a = 0;
}
}
}
function resimYuklemeTamam (evt:Event):void
{
//Resim taşmasını engellemek için resim yüklendikten sonra boyutlarını
//sahne boyutuna göre ayarlıyoruz.
resimLoader.width = stage.stageWidth;
resimLoader.height = stage.stageHeight;
//animasyon yapacağımızdan dolayı sahnede gözükmeyen bir yere ekliyoruz. Yani soltaraftan -700 uzaklıkta.
resimLoader.x=-700;
//sahneye ekliyoruz. Ama şu an gözükmüyor. Çünkü x=-700 verdik.
addChild (resimLoader)
//animasyon fonksiyonuna yönlendiriyoruz.
animasyonYap();
}
function animasyonYap():void
{
//Yeni bir tween tanımlıyoruz. Bu tween resimLoader' ın x pozisyonunu -700'den 0'a getirecek ve
//bunları 2 saniyede yapacak. Bunları yaparken Bounce.easeOut efekti uygulayacak. Yani çarpıp geri gelme.
var tw1:Tween = new Tween (resimLoader,"x",Bounce.easeOut,-700,0,2,true);
//Animasyon bittiğinde animasyonBitti fonksiyonunu çalıştıracağız.
tw1.addEventListener(TweenEvent.MOTION_FINISH,animasyonBitti)
}
public function animasyonBitti(evt:TweenEvent):void
{
//Bu fonksiyonda resimLoader nesnemizi sahneden sağ taraftan çıkartacaktır.
//Bütün bunlar 4 sn. içinde olacak. Beşinci saniyede olaylar tekrarlanmaya başlayacak.
//EnterFrame Event 'den dolayı.
var tw2:Tween = new Tween (resimLoader,"x",Bounce.easeIn,0,700,2,true);
}
}
}
Flash AS3 ile XML' den veri çekme olayını tamamlamış olduk.
yazıya git
|
|
|
|
|
Flash da AS3 ile yönlendirme navigateToURL.
|
Basit ama işimizi çok kolaylaştıracak bir konu anlatmak istiyorum. navigateToURL
Bazen bir kontrole basılınca başka bir siteye gitmesini isteyebiliriz. Yada bir flash menu yaptığımızda diğer bir sayfa gitmesini isteyebiliriz işte bu gibi durumlarda navigateToURL komutu işimizi görecektir.
Bunun için bir urlRequest nesnesi tanımlayıp yönlenecek siteyi belirtmemiz gerekir.
var req:URLRequest = new URLRequest ("http://www.byhasanusta.com")
navigateToURL(req,"_blank")
_blank (Boş bir sayfaya yönlendirir.)
_parent (Bulunduğumuz sayfada açar.)
yazıya git
|
|
|
|
|
Takım çalışması nasıl olurmuş.
|
Takım çalışmasının önemini sıklıkla duyarız. Bu sefer bir resim bunu çok iyi anlatıyor. Eğer iyi bir takımınız varsa eşiniz, cocuğunuz, arkadaşınız, en önemlisi aileniz her yol size otoban gibi gelir.
yazıya git
|
|
|
|
|
|
30.12.2009
|
Bir yaş daha yaşlandım.
|
Yılın şu son günlerinde yılbaşı telaşının yanına bir de doğum günü telaşıda eklenince. Çifte telaş oldu. Tabiki bunlar tatlı telaşlar. Yılda birkez olsun okadar da diyelim.
 |
işte buda benim ailem. Doğum günü yemeği. Annem, Babam, Eşim, Kardeşlerim ve yiğenim. Yengemiz malesef katılamadı.
|
yazıya git
|
|
|
|
|
|
Bebeğimize isim seçiyoruz.
25 Nisan 2010 rüzgarlı bir Pazar akşamı saat 20:00 civarlarında Bebeğimiz FURKAN dünyaya merhaba dedi.
Ankete katılan tüm arkadaşlara Teşekkür ediyoruz.
FURKAN isminin anlamı
|