Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Tasarımcının Mutfağı » Flash, Director, Live Motion » AS3 for döngüsü ile mc çoğaltma


Flash, Director, Live Motion Flash, Director, Live Motion hakkında sorularınızı ve merak ettiklerinizi burada yer verebilirsiniz.

Yanıt
 
LinkBack Seçenekler
Old 11.03.2008   #1 (permalink)
MGoktas
 
MGoktas's Avatar
 
Üyelik Tarihi: 26.01.2007
Yer: Kayseri
Mesaj: 322
Görsel: 17
AS3 for döngüsü ile mc çoğaltma

Merhabalar.
AS3'e adım atmaya çalışıyorum.

for döngüsüyle library'den çağırdığımız butonu XML'deki sayı oranınca çoğaltıyordum AS2'de.
AS3 XML kullanımı tamam, fakat for döngüsüyle yine mc'leri çoğaltmaya çalışıyorum. Zaten temelde AS2 bilgim de çok derin olmadığı için çözemedim bu işi. addChild yöntemiyle library'den mc çağırıyorum ama isimlendirmeyi nasıl yapacağımı ve "i" sayısına göre nasıl çoğaltacağımı ayarlayamadım.
Kod:
menu_mc.addEventListener(MouseEvent.CLICK, listeyi_ac);

function listeyi_ac(event:Event):void {
	for (var i = 0; i<galerim.length(); i++) {
	//Burdan sonra addChild metoduyla çoğaltmak istedim ama 
        //buraya kadarının da doğru bir metod olduğu konusunda emin değilim.
	}
}
AS3 sorularım daha çok gelecek gibi görünüyor. Yardımcı olabileceklere şimdiden çok teşekkürler.
MGoktas şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.03.2008   #2 (permalink)
codesignist
 
codesignist's Avatar
 
Üyelik Tarihi: 02.01.2005
Yer: İstanbul
Mesaj: 242
Re: AS3 for döngüsü ile mc çoğaltma

Öncelikle kopyalanacak mc'i "my_mc" adında linkage etmelisiniz. Sonrası da şu şekilde;
PHP Code:
menu_mc.addEventListener(MouseEvent.CLICKlisteyi_ac);

function 
listeyi_ac(event:Event):void {
    for (var 
0i<galerim.length(); i++) {
        var 
mc = new my_mc();
        
mc.name "mc_" i;
        
mc.i*20;
        
//Bu doğru bir yöntem ;)
    
}

__________________
abonelik , codesignist.com , yunuses.com , blog
codesignist şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.03.2008   #3 (permalink)
MGoktas
 
MGoktas's Avatar
 
Üyelik Tarihi: 26.01.2007
Yer: Kayseri
Mesaj: 322
Görsel: 17
Re: AS3 for döngüsü ile mc çoğaltma

AS2 ile hazırlamaya başladığım bir galeriyi AS3 ile yeniden oluşturmaya karar verdim bu sayede AS3'e geçmiş olurum diye düşündüm. Biraz daha farklı bir şekilde oluşturmak istedim bir önceki bölümde sorduğum fonksiyonu. Bazı Türkçe kaynaklardan ve flash Help sayfalarından biraz araştırarak bu aşamaya getirdim.

Önce kodlarımı ekleyeyim sonra da sorularımı

PHP Code:
var galerim:XML = new XML();
var 
xml_url:URLRequest = new URLRequest("mg.XML");
var 
yukleyici:URLLoader = new URLLoader(xml_url);
yukleyici.addEventListener(Event.COMPLETExml_yuklenen);

function 
xml_yuklenen(event:Event):void {
    
galerim XML(yukleyici.data);
    var 
toplam=galerim.kategori.length();
    var 
bos = new MovieClip();
    
bos.x=30;
    
bos.y=30;
    
addChild(bos);
    
//
    
function menuler() {
        var 
0;
        for (
i0i<toplami++) {
            var 
my_menu = new Sprite();
            
my_menu.graphics.beginFill(0xFFFFFF);
            
my_menu.graphics.drawRect(0030050);
            
my_menu.y=(my_menu.height+1)*i;
            
//
            
bos.addChild(my_menu);
            
//
            
var yazi = new TextField();
            
yazi.text galerim.kategori[i].@*;
            
yazi.autoSize TextFieldAutoSize.LEFT;
            
yazi.y=5;
            
yazi.x=5;
            
yazi.selectable=false;
            
//
            
var yazi_format = new TextFormat();
            
yazi_format.font "Swiss 721 Bold Extended BT";
            
yazi_format.color 0xb7b7b7;
            
yazi_format.size 40;
            
yazi_format.letterSpacing=-2;
            
my_menu.addChild(yazi);
            
yazi.setTextFormat(yazi_format);
            
//
            
var sayigalerim.kategori[i].foto.length();
            var 
0;
            
my_menu.addEventListener(MouseEvent.MOUSE_DOWNmenu_tikla);
            function 
menu_tikla(event:Event) {
                for (
j=0j<sayij++) {
                    var 
my_contact:Sprite = new Sprite();
                    
my_contact.graphics.beginFill(0xb7b7b7);
                    
my_contact.graphics.drawRect((30+1)*j5503030);
                    
bos.addChild(my_contact);
                }
            }
        }
    }
    
menuler(); 
1: yazi_format.font = "Swiss 721 Bold Extended BT"; diye eklediğim fontu embed yapmak istiyorum, yardım konularına baktım ama çözemedim. Herhangi bir text alanı olmadığı için sahnede vs. kodlarla nasıl oluşturacağımı çözemedim yani.

2: my_menu.addEventListener(MouseEvent.MOUSE_DOWN, menu_tikla); fonksiyonu gerçek sayıya ulaşamıyor. trace yaptığımda 'sayi'nin doğru yazildiğini görüyorum, dolayısıyla my_menu Sprite'ini ayarlayamıyorum sanırım...

Library'de herhangi bir şey yok, hepsini burda oluşturuyorum.

3: Aslında bu tam sorun değil ama, tüm kodları xml_yuklenen fonksiyonu içinde oluşturmak zorunda kaldım, onu kapatıp yeni fonksiyon olarak başlatırsam XML dosyama ulaşamıyorum, yani verdiğim değerleri yanlış rakamlarda görüyor. galerim.length vs. gibi değerleri yani. Bunların bu fonksiyon içinde olması bir sorun oluşturur mu?

4: my_menu'ye MOUSE_DOWN komutu verdiğim için üzerine gelince el olmasını istiyorum ama ok olarak kalıyor, Sprite olduğu için mi?
MGoktas şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 28.03.2008   #4 (permalink)
codesignist
 
codesignist's Avatar
 
Üyelik Tarihi: 02.01.2005
Yer: İstanbul
Mesaj: 242
Re: AS3 for döngüsü ile mc çoğaltma

Tersten gidelim; =)
4. hand cursor için;
Alıntı:
buttonMode=true;
kodunu kullanıyoruz.

3 ve 2 için aşağıdaki kodlar;

PHP Code:
var galerim:XML = new XML();
var 
yukleyici:URLLoader = new URLLoader(new URLRequest("mg.XML"));
yukleyici.addEventListener(Event.COMPLETExml_yuklenen);
var 
bos = new MovieClip();
bos.30;
bos.30;
addChild(bos);
function 
xml_yuklenen(event:Event):void {
    
galerim XML(e.target.data);
    var 
toplam galerim.kategori.length();
    
// 
    
for (i0i<toplami++) {
        var 
my_menu = new MovieClip();
        
my_menu.graphics.beginFill(0xFFFFFF);
        
my_menu.graphics.drawRect(0030050);
        
my_menu.= (my_menu.height+1)*i;
        
// 
        
bos.addChild(my_menu);
        
// 
        
var yazi = new TextField();
        
yazi.text galerim.kategori[i].@*;
        
yazi.autoSize TextFieldAutoSize.LEFT;
        
yazi.y=5;
        
yazi.x=5;
        
yazi.selectable=false;
        
// 
        
var yazi_format = new TextFormat();
        
yazi_format.font "Swiss 721 Bold Extended BT";
        
yazi_format.color 0xb7b7b7;
        
yazi_format.size 40;
        
yazi_format.letterSpacing=-2;
        
my_menu.addChild(yazi);
        
yazi.setTextFormat(yazi_format);
        
// 
        
my_menu.sayi galerim.kategori[i].foto.length();
        
my_menu.addEventListener(MouseEvent.MOUSE_DOWNmenu_tikla);
        
my_menu.buttonMode true;
        
my_menu.mouseChildren false;
    }
}
function 
menu_tikla(event:Event) {
    for (
j=0j<e.target.sayij++) {
        var 
my_contact:Sprite = new Sprite();
        
my_contact.graphics.beginFill(0xb7b7b7);
        
my_contact.graphics.drawRect((30+1)*j5503030);
        
bos.addChild(my_contact);
    }

1. dinamik embed için;
http://www.tink.ws/blog/embedding-fonts-in-as3/
__________________
abonelik , codesignist.com , yunuses.com , blog
codesignist şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 04.05.2008   #5 (permalink)
MGoktas
 
MGoktas's Avatar
 
Üyelik Tarihi: 26.01.2007
Yer: Kayseri
Mesaj: 322
Görsel: 17
AS3-XML-Loader sorunları

AS3-XML-Loader sorunları
Bu soruları yeni konu yerine buraya eklemek daha uygun sanırım.

AS3'te loader sınıfını yeni inceleyebildim.
Herhangi bir imaj ya da SWF'yi yükleme olayını anladım.
Anladığım kadarıyla artık bir boş mc ye ihtiyacımız yok. Yükleyicimizi addChild(ldr) diyerek çözüyoruz olayı.

1-İlk yüklendiğinde sahnenin ortasında olması için COMPLETE ya da INIT fonksiyonlarına gerekli kodları yazıp her ikisinde de denediğim halde ortalayamadım. Direk sahneye
PHP Code:
ldr.x=(stage.stageWidth/2)-(ldr.width/2); 
yazıyorum yine olmuyor. Sadece RESIZE fonksiyonumun içinde çalışıyor. Sahneyi değiştirince olması gereken yere geliyor yani. Onun haricinde çalışmıyor.
AS3'te karşılıksız fonksiyon adlarını, değişken adlarını vs. hata olarak bildirmesi çok iyi. Olmayan bir şeye x,y vs. değeri atamışsak onu es geçmiyor. Bu yönden çok güzel olmuş. Fonksiyonları veya komutları yazdığımız sıra da sanırım artık çok önemli, aşağı yazdığım komutlar çalışmazken yukarı aldığımda çalışır hale geldi. Bunun gibi bir sorun mu acaba bu ldr fonksiyonun çalışmaması da...

2- Loader sınıfında adresi
PHP Code:
var int_adres = new URLRequest("intro.SWF");
introLdr.load(int_adres); 
kodlarıyla ekliyoruz. XML'den adresi nasıl gösterebilirim? Ayrıca XML kodlarımın arasında bazı sorunlar daha var, kodların yanına eklediğim...

PHP Code:
var myxml = new XML();
var 
xml_url = new URLRequest("menu.XML");
var 
xml_Ldr = new URLLoader(xml_url);
xml_Ldr.addEventListener(Event.COMPLETEfncXml);
//
function fncXml(event:Event):void {
    
myxml XML(xml_Ldr.data);
    
//
    
function menuler() {
        for (var 
i0i<myxml.anabolum.length(); i++) {
            var 
bT:buton=new buton();
            
bT.x=0;
            
bT.y=50;
            
mBar.addChild(bT);//mBar sahnede mevcut olan MC.
            //
            
var my_menu:ana_buton = new ana_buton();
            
my_menu.x=0;
            
my_menu.y=my_menu.height*i+0;
            
my_menu.yazi.text myxml.anabolum[i].@*;
            
bT.addChild(my_menu);
            
//
            
var sayi myxml.anabolum[i].galeri.length();
            for (var 
j=0j<sayij++) {
                var 
alt_menu:alt_buton = new alt_buton();
                
alt_menu.x=0;
                
alt_menu.y=alt_menu.height*j+100;
                
alt_menu.yazi.text myxml.anabolum.galeri[j].@ad;
                
bT.addChild(alt_menu);
                
alt_menu.fSayi myxml.anabolum[i].galeri[j].foto.length();//bu rakamı aşağıda tanıtamıyorum.
                //
                
trace(alt_menu.fSayi);//burada rakamı test ediyorum, her galerideki foto sayısını doğru gösteriyor.

                
alt_menu.addEventListener(MouseEvent.CLICKshowSmalls);
                function 
showSmalls(e:MouseEvent) {
                    for (var 
f=0f<this.fSayif++) {//burada this ile alt_menu'den hangisinde olduğumuza ulaşmaya çalışıyorum. AS2 de bu yöntemle ulaşıyordum, burada ulaşamıyorum.
                    //this.fSayi yerine herhangi bir sayı yazıyorum, fonksiyon çalışıyor. 
                    //this.fSayi'yi tanıtamıyorum yani. 
                    //sadece fSayi yazdığımda hata veriyor, alt_menu.fSayi yazdığımda yine yanlış tanıyor. Başka ne yazabilirim ki acaba:)
                        
var sFoto:small=new small();
                        
sFoto.x=0;
                        
sFoto.y=53*f+1;
                        
smallsContainer.addChild(sFoto);
                        
//
                        
sFoto.addEventListener(MouseEvent.CLICKsmallLoad);
                        function 
smallLoad(e:MouseEvent){
                        
// imajları Loader ile kucuk adli çoğalttığım mc'ye yuklemek istiyorum...
                        
}
                    }
                }
            }
        }
    }
    
menuler();

Yukarıdaki sorunlar da olduğu gibi sanırım fonksiyonları uygun yerde kapatamadım, ondan mı kaynaklanıyor acaba sayıları yanlış görme sorunları.
MGoktas şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 04.05.2008   #6 (permalink)
Gazing
 
Üyelik Tarihi: 22.09.2007
Yer: İzmir
Yaş: 16
Mesaj: 27
Re: AS3 for döngüsü ile mc çoğaltma

Kodlarındaki açıklamarı okuyunca bir kaç şeyi açıklayayım dedim

Olayı daha iyi anlamak için yeni bir AS3 dosyası aç.Bir movieclip yarat ve bunun kütüphanedeki Class ismi kare_mc olsun.İsminden de anlaşılacağı gibi içine sadece bir kare çiz.

frame kodumuz:
PHP Code:
var kare:kare_mc = new kare_mc();
addChild(kare);
/////
kare.addEventListener(MouseEvent.MOUSE_DOWN,tikla);
function 
tikla(e:Event) {
    
trace(e.target);

Çalışmayı test edersen ve kareye basarsan karenin ismini görürsün.Yani kısacası this gitti event.target metodu geldi.

Şimdi şu kodu deneyelim:
PHP Code:
var kare:kare_mc = new kare_mc();
addChild(kare);
/////
kare.degisken="as3";
////
kare.addEventListener(MouseEvent.MOUSE_DOWN,tikla);
function 
tikla(e:Event) {
    
trace(e.target);
    
trace(e.target.degisken);

Test edersen as3 kelimesini görürsün.Yani kare içine id atıp sonra bu id'yi event.target ile alıp istediğini yapabilirsin.

Tamamdır oldu bu iş dediğini duyar gibiyim Ama yanılıyorsun.Şimdi kare_mc içine bir dinamik text at ve içine zoque yaz.

Çalışmanı test ve tam text üstüne tıkla veeee hata geldi değil mi? Ama output penceresindeki ilk satıra dikkat et:
PHP Code:
[object TextField
Yani aslında biz kare içindeki texte bastık ve bastığımız geldi.Aslında biz kare objesine, bu objenin tüm alt dallarına event ekleniyor. Peki ne yapmalıyız?

Ben çalışmalarımda basit bir yöntem kullanıyorum.Şimdi kare_mc içindeki çizim olan kareyi buton yap ve instance name kare_btn olsun.

frame kodumuz:
PHP Code:
var kare:kare_mc = new kare_mc();
addChild(kare);
/////
kare.degisken="as3";
////
kare.kare_btn.addEventListener(MouseEvent.MOUSE_DOWN,tikla);
function 
tikla(e:Event) {
    
trace(e.target);
    
trace(e.target.par