2010-11-18 7 views
0

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) { 

    } 
} 

cevap

1

tarayıcıya bir dizin bazı ilginç dersleri sunmaktadır Actionscript 3.0 için kullanılabilir bir flash.filesystem söz konusudur. Ne yazık ki ve güvenlik nedenleri temel olarak, yalnızca projenizi AIR'e karşı derlerken kullanılabilir. Normal bir swf yerine bir AIR uygulaması oluşturmayı düşündünüz mü?

Dosya sistemi paketini kullanmak için (ve günlük dosyalarınızı tarayıp tarayabilmeniz için) uygulamanızı bir AIR uygulamasına dönüştürmeniz gerekir. Sen yayın ayarlarını değiştirerek bunu yapabilirsiniz:

alt text

Ben a good example nasıl bulduğunu tarayıcı masaüstünde tüm dosyaları için.

+0

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

+0

Cevabımı daha ayrıntılı olarak güncelledim. – jdecuyper

+0

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