0

Flashcs5にAdobeAirデスクトップメッセージボードアプリが組み込まれています。動的テキストフィールドに外部の「.txt」ファイルが読み込まれ、2分ごとに新しいファイルがチェックされます。ファイルがロードされるたびにではなく、ファイルが新しい場合にのみ、(NotificationType.CRITICAL)でユーザーに通知する必要があります。出来ますか?

アプリ内のすべてのコード:

NativeApplication.nativeApplication.startAtLogin=true

stage.nativeWindow.alwaysInFront=true;

//external text file load and recheck every 2 minutes

var myInterval:uint  = setInterval (loadUrl, 120000);
var loader:URLLoader = new URLLoader(new URLRequest("https://my_text_file.txt"));
loader.addEventListener(Event.COMPLETE, completeHandler);

function completeHandler(event:Event):void {
  var loadedText:URLLoader = URLLoader(event.target);
if(myText_txt.htmlText!=loadedText.data){
   myText_txt.htmlText = loadedText.data;
     stage.nativeWindow.notifyUser(NotificationType.CRITICAL) 
}else {
  //do nothing
   }
}

function loadUrl():void {
    loader = new URLLoader(new URLRequest("https:///my_text_file.txt"));
loader.addEventListener(Event.COMPLETE, completeHandler);
}

 // button control


Minimize_BTN.addEventListener(MouseEvent.CLICK, minimize);
function minimize(e:MouseEvent){
stage.nativeWindow.minimize();

}

drag_BTN.addEventListener(MouseEvent.MOUSE_DOWN, drag);
function drag(e:MouseEvent){
stage.nativeWindow.startMove();

}

stop(); //Stop on the frame you want
4

2 に答える 2

0

FileReferenceオブジェクトを使用して、 modificationDateなどのいくつかのプロパティを調べてみませんか。これに基づいて、ファイルが異なるかどうかを確認し、サイズをテストすることもできます。

于 2013-01-16T07:56:27.513 に答える
0

myText_txt フィールドが読み込まれたテキストを変更している場合 (たとえば、myText_txt のcondenseWhiteプロパティが true に設定されている場合)、コードが機能しない可能性があります。テキストが変更されたかどうかをより正確に判断するには、oldText などの名前の文字列変数に保存し、oldText新しく読み込まれたテキストを比較します。

oldText変数を含めるように書き直したコードの一部を次に示します。このコードは、一部の変数を 1 回だけインスタンス化し、一部のコードの重複を回避するため、より効率的です。

import flash.net.URLRequest;

function completeHandler(event:Event):void
{
    var newText:String = loader.data;
    if(newText != oldText)
    {
            myText_txt.htmlText = newText;
            stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
            oldText = newText;
    }
}

function loadUrl():void
{
    loader.load(req);
}

// Initialize your variables and event handlers only one time
var req:URLRequest = new URLRequest("https:///my_text_file.txt");

// Set cacheResponse to false to prevent a successful response
// from being cached.
req.cacheResponse = false;

// And don't bother checking the cache, either. 
// Not necessary, but the request will execute a little faster.
req.useCache = false;

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);

// Use oldText inside completeHandler() to determine 
// whether the file's text has changed
var oldText:String = "";

var myInterval:uint = setInterval(loadUrl, 120000);

// Start loading the text right away
loadUrl();
于 2013-01-16T08:38:46.157 に答える