Action Script 3.0

Kodla Büyü

Mucit

Aktif Üye
Mesajlar
147
Selam arkadaşlar action script 3.0 ile kütüphanede bulunan resimleri bir butonla farklı framelerde farklı resimler gelecek şekilde göstermem gerekiyor. ama addchild metodu ile kütüphaneden alamıyorum resmi. Bilgisi olan yardım edebilir mi?
 
var image:Bitmap = new Bitmap(new karne(0,0));
var sprite:Sprite = new Sprite;
sprite.addChild(image);
addChild(sprite);

Kütüphanedeki resmin class'ı ASLinkage yazan yer karne, resmin adı karne.jpg. İsterseniz sprite'a eklemeden doğrudan da addchild edebilirsiniz.
 
var image:Bitmap = new Bitmap(new karne(0,0));
var sprite:Sprite = new Sprite;

sprite.addEventListener(Event.ADDED_TO_STAGE, onAdded);

function onAdded(e:Event):void
{
trace("eklendi");
}
sprite.addChild(image);

addChild(sprite);


Bu şekilde eklerseniz addchild ettikten sonra bazı işlemler yaptırabilirsiniz. Örneğin resim dosya boyutu vs bazı sebeplerden geç yükleniyorsa; bir yükleniyor animasyonu ekleyip ardından addchild işlemi sonunda bu yükleniyor animasyonunu kaldırabilirsiniz. Daha estetik olur.

Kod çalışmazsa EventListener'ı sprita değil image a bağlayarak deneyebilirsiniz
 
import flash.display.Bitmap;
import flash.display.Sprite;

var image:Bitmap=new Bitmap(new rontgen(0,0));
var sprite:Sprite=new Sprite;
resim.addEventListener(MouseEvent.CLICK,goster)
function goster(e:Event)
{

sprite.addChild(image);
addChild(sprite);
sprite.x=50;
sprite.y=50;
sprite.width=400;
sprite.height=300;
}
kapat.addEventListener(MouseEvent.CLICK,gotur)
function gotur(e:Event)
{
removeChild(sprite);
}

bu kodlarla hallettim belki ihtiyacı olan olur. ebolukcu teşekkür ederim. kapatma düğmesi olduğu için fonksiyonun dışında tanımlama yaptım. bu şekliyle bir if yapısıyla currentFrame kontrolü yapılırsa farklı framelerde tek bir butonla farklı resimler açılabilir.
 
hocalarım ben de bi soru sorayım o zaman, ben de xml okutmaya çalışmıştım.. apk olarak tabi, yol problemini çözememiştim.. apk kurulduğunda xml'i nasıl okutacağım?
 
Hocam xml i bir websitesine atacan. Xml yolunu da, http://sitadi.com/xmlim.xml seklinde verecen. Telde int varken bu durumda calisir. Denenmistir. Telde int yokken onun bir error event i vardi. O event sayesinde lutfen internetinizi aciniz diicen
 
kod içinde değilde sd kartta felan olsa, hani açılıp not defteri ile düzenlenebilir veya kurulum dosyasının yanına aktaramamıştım..
 
Hocam eğer tüm cihazlarda birden bilgi değiştirecekseniz bir web sitesinde tutup oradan değiştirmelisiniz. Sitede değişince tüm cihazlarda değişir. Ancak ben kendime program yapıyorum diyorsanız program ilk açıldığında xml'i internetten indirebilir veya sizin as3 tarafından oluşturulup cihazın hafızasını kaydetmeniz lazım. Benzer bir durumu yapmıştım daha önceden XML değilde sqlite veritabanını cihaz ilk açıldığında netten indirip telefonun hafızasına kaydettirmiştim. Böylelikle as3 ile veritabanına bağlanmıştım. Sqlite için olan kodları değiştirip XML yaptım. Bilgisayarda çalıştı. Cihazda da çalışır diye düşünüyorum:
import flash.filesystem.*;
import flash.data.SQLMode;
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.data.SQLResult;
import flash.net.URLStream;
import flash.utils.ByteArray;
import flash.net.URLRequest;
import flash.errors.SQLError;


var conn:SQLConnection = new SQLConnection();
var urlStream:URLStream = new URLStream();
var fileData:ByteArray = new ByteArray();
var veriakiyor:Boolean = false;
var ilkkurulum:Boolean = false;
var dbFile:File = File.userDirectory.resolvePath("BilgiYarismasi/a.xml");

var selectStmt:SQLStatement = new SQLStatement();
var gXML:XML;
var g2XML:XML;
var bagg:Boolean=false;
var gmyLoader:URLLoader = new URLLoader();
yukle();

function yukle():void
{
var urlString:String = "http://fenbilimleri.org/haydibil/sorular.xml";
var urlReq:URLRequest = new URLRequest(urlString);
urlStream.addEventListener(Event.COMPLETE, loaded);
urlStream.load(urlReq);
}



function loaded(event:Event):void
{
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeAirFile();
}

function writeAirFile():void
{


var file:File = File.userDirectory.resolvePath("BilgiYarismasi/a.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();



ilkkurulum = true;


}


Benim projemden kaynaklı fazladan import veya variable olabilir silersiniz. File.userDirectory.resolvePath("BilgiYarismasi/a.xml") cihazın ana klasörüne(bilgisayar için kullanıcı klasörü, android için de cihazın ana klasörü) BilgiYarismasi klasörü açıp sitedeki sorular.xml i oraya a.xml diye kaydediyor.
 
Yukarıdaki kodları ilk açılışta çalıştırmak için SharedObject'e ilkkurulum true değerini atmalısınız. Sharedobject as3'ün Cookies dosyaları gibidir. yukle fonksiyonunu da Shared objecti kontrol ederek çalıştırmalısınız. Aksi takdirde program her açıldığında baştan indirecektir.

Veya alternatif olarak cihaz XML'e bağlanamazsa yukle fonksiyonunu çalıştırabilirsiniz. SharedObject Kullanmadan.

localXML.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler)
şeklinde bir error event bağlayarak hata çıkması anında yukle() fonksiyonunu çalıştırırsınız.

bu durumda ilkkurulum=true; nun hemen ardına XML'e bağlanmaya çalışırsınız. Karışık olduysa özür dilerim.

Eğer ben AS3 içerisinde tanımladığım XML'i ilk kurulumda cihaza atacağım diyorsanız, file ve fileStream sınıfları incelemelisiniz. O da mümkündür sanırım
 
evet hocam hallettim çok sağolun, zaten o path kısmını fazla kurcalamışım native path felan gibi gereksiz kodlar vardı.. bu son yazdığınıza da yarın bakayım :) hayırlı sahurlar
 
Geri
Üst