Belirtilen .log (metin) dosyasını yükleyen ve içeriklerini dinamik olarak filmde gösteren bir komut dosyasıdır (çalınan parçadan sanatçı ve şarkı).AS3/Flash, Dinamik kod dosyalarına göz atmak ve bu kod içerisine yüklemek için nasıl bir tuş yapılır?
Oynatıcı belirli bir süre sonra yeni .log dosyaları oluşturduğundan, .swf'yi başlatırken veya oturum sırasında değiştiğinde el ile en son .log dosyasını seçmem gerekiyor. Ne yapıyorum, yani 127.0.0.1,12345.log
mi, trackLogNum.txt dosyasını açarak ve orada 5 SAYI bölümü olan .log dosya adı yapının (logNum değişken) yazıyor dizinde .log dosyalarını taramak için bu kodda bir düğme uygulamak için herhangi bir yolu var ve daha sonra harici parçaLogNum.txt dosya adında her defasında yazma yerine en yeni olanı seçip yükleyin.
Sanırım otomatik olarak en yeni .log dosyasını yükleyen bir işlev mükemmel olurdu (slayt gösterisinde, genellikle ilk ve aynı zamanda son öğeye gitmek için kırıntı düğmelerinin olduğu dinamik olarak yüklenirken gördüğüm gibi), ancak PHP veya Flex kullanmadan mümkün olmadığını söylediler. Kodda gördüğünüz gibi, bu yerel bir uygulamadır, hiçbir sunucu çalışmıyor.
Yardımlarınız için şimdiden teşekkür ederiz.
var reload:Timer = new Timer(5000, 1);
reload.addEventListener(TimerEvent.TIMER, onTimer);
//--------------------
var logNumLoader:URLLoader = new URLLoader();
logNumLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
logNumLoader.addEventListener(Event.COMPLETE, loadedLogNum);
logNumLoader.load(new URLRequest("trackLogNum.txt"));
var _logNum:String;
function loadedLogNum(e:Event):void {
trace(e.target.data.logNum);
_logNum = e.target.data.logNum;
loadTracks();
}
//--------------------
var tracksLoader:URLLoader = new URLLoader();
tracksLoader.addEventListener(Event.COMPLETE,onTracksLoaded);
tracksLoader.addEventListener(IOErrorEvent.IO_ERROR,onTracksError);
tracksLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onTracksError);
loadTracks();
function onTracksLoaded(e:Event):void {
trace("onTracksLoaded");
parseTracks(tracksLoader.data);
reload.start();
}
function onTimer(event:TimerEvent):void{
loadTracks();
}
function onTracksError(e:Event):void {
trace("onTracksError", e);
reload.start();
}
function loadTracks():void {
tracksLoader.load(new URLRequest("127.0.0.1,"+_logNum+".log"));
}
function parseTracks(data:String):void {
try {
var lines:Array = data.split("\n");
var lastLine:String = lines[lines.length - 2];
var artistAndSong:String = lastLine.substr(24).split(" - ").join("\n\n->");
trace(artistAndSong);
track_info.text = artistAndSong;
addChild(track_info);
} catch(e:Error) {
}
}
Flash CS4'tür ve bu komut dosyasını tam ekranda ikinci bir monitörde kullanabiliyorsam Air'i kullanmayı umursamıyorum (Şu anda yaptığım şey, bir tarayıcıda .swf dosyasını gömüyorum). Soru şu ki, bu kodu tam olarak istediğim şey için nasıl değiştireceğime dair hiçbir fikrim yok, çünkü bu konuyla ilgili herhangi bir referans bulunamadı. Nasıl çalışacağını tahmin ederseniz daha spesifik olabilir misiniz? Çok teşekkür ederim. – Pablo
Cevabımı daha ayrıntılı olarak güncelledim. – jdecuyper
Air uygulamamı yayınladım ve yükledim, ama üzgünüm, kodumda çalışmasını sağlamak için örneği anlamıyorum. Ve başka bir soru, onu tam ekranda çalıştırmam gerektiğidir. Http://cookbooks.adobe.com/post_Using_the_FullScreen_functionality_in_AIR-8004.html dosyasını kurdum ancak bununla ne yapmam gerektiğinden emin değilim. Air uygulamaları ile çalışmıyorum. – Pablo