setInterval(functionName:Object, interval:Number [, param1:Object, param2, ..., paramN]) : Number setInterval(objectName:Object, methodName:String, interval:Number [, param1:Object, param2, ..., paramN]) : Number
SWF ファイルの再生時に一定の間隔で関数、メソッド、またはオブジェクトを呼び出します。インターバル関数を使用して、データベースから変数を更新したり、時間表示を更新したりできます。
interval が SWF ファイルのフレームレートを超える場合は、画面の更新に伴う影響を最小限に抑えるために、インターバル関数は再生ヘッドがフレームに入ったときにのみ呼び出されます。
メモ : Flash Lite 2.0 では、インターバルが SWF ファイルのフレームレートより短い場合、このメソッドに渡されたインターバルは無視され、インターバル関数は、SWF ファイルのフレームレートの間隔でのみ呼び出されます。間隔が、SWF ファイルのフレームレートより長い場合、イベントは、間隔が経過した後の次のフレームで呼び出されます。
functionName:Object - 関数名または匿名関数への参照。
interval:Number - functionName または methodName パラメータに対する呼び出しの間隔
(ミリ秒)。
param:Object (オプション) - functionName または methodName パラメータに渡すパラメータ。param1,param2, ..., paramN のように複数のパラメータはカンマで区切ります。
objectName:Object - methodName メソッドを含むオブジェクト。
methodName:String - objectName のメソッド。
Number - 間隔を識別するための整数。これを clearInterval() に渡して間隔をクリアします。
シンタックス 1 : 次の例では、1000 ミリ秒 (1 秒) ごとに匿名関数を呼び出します。
setInterval( function(){ trace("interval called"); }, 1000 );
シンタックス 2 : 次の例では、2 つのイベントハンドラを定義し、各イベントハンドラを呼び出します。最初の setInterval() の呼び出しが、trace() ステートメントを含む callback1() 関数を呼び出します。2 番目の setInterval() の呼び出しが、ストリング "interval called" をパラメータとして callback2() 関数に渡します。
function callback1() {
trace("interval called");
}
function callback2(arg) {
trace(arg);
}
setInterval( callback1, 1000 );
setInterval( callback2, 1000, "interval called" );
シンタックス 3 : 次の例では、オブジェクトのメソッドを使用します。オブジェクトに対して定義されたメソッドを呼び出す場合は、このシンタックスを使用する必要があります。
obj = new Object();
obj.interval = function() {
trace("interval function called");
}
setInterval( obj, "interval", 1000 );
obj2 = new Object();
obj2.interval = function(s) {
trace(s);
}
setInterval( obj2, "interval", 1000, "interval function called" );
オブジェクトのメソッドを呼び出すには、次の例に示すように、2 つ目の形式の setInterval()
シンタックスを使用する必要があります。
setInterval( obj2, "interval", 1000, "interval function called" );
この関数を使用する場合は、SWF ファイルで使用するメモリに注意する必要があります。たとえば、SWF ファイルからムービークリップを削除した場合、SWF ファイル内で実行される setInterval() 関数は削除されません。次の例に示すように、setInterval() 関数の使用が終了するたびに、clearInterval() を使用してこの関数を削除してください。
// MovieClipLoader インスタンスのイベントリスナーオブジェクトを作成します。
var listenerObjectbject = new Object();
listenerObject.onLoadInit = function(target_mc:MovieClip) {
trace("start interval");
/* ターゲットムービークリップがロードされた後、
約 1000 ms (1 秒) ごとに実行され、intervalFunc 関数を呼び出すコールバックを作成します。 */
target_mc.myInterval = setInterval(intervalFunc, 1000, target_mc);
};
function intervalFunc(target_mc) {
// インスタンス名と任意のテキストを表示する簡単なメッセージを表示します。
trace(target_mc+" has been loaded for "+getTimer()/1000+" seconds.");
/* ターゲットムービークリップをクリック (または離す) ときに、間隔を消去し、
ムービークリップを削除します。ムービークリップを削除する前に間隔を消去しないと、
ムービークリップインスタンスが存在しなくなっても、
関数は 1 秒ごとに関数自体を呼び出します。 */
target_mc.onRelease = function() {
trace("clear interval");
clearInterval(this.myInterval);
// ターゲットムービークリップを削除します。
removeMovieClip(this);
};
}
var jpeg_mcl:MovieClipLoader = new MovieClipLoader();
jpeg_mcl.addListener(listenerObject);
jpeg_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg",
this.createEmptyMovieClip("jpeg_mc", this.getNextHighestDepth()));
setInterval() をクラス内で使用する場合は、この関数を呼び出すときに this キーワードを使用していることを確認する必要があります。このキーワードを使用しないと、setInterval() 関数がクラスメンバーにアクセスできません。次に、このことを説明する例を示します。deleteUser_btn というボタンを含む FLA ファイルで、次の ActionScript をフレーム 1 に追加します。
var me:User = new User("Gary");
this.deleteUser_btn.onRelease = function() {
trace("Goodbye, "+me.username);
clearInterval(me.intervalID);
delete me;
};
次に、FLA ファイルと同じディレクトリに "User.as" というファイルを作成します。次の ActionScript を入力します。
class User {
var intervalID:Number;
var username:String;
function User(param_username:String) {
trace("Welcome, "+param_username);
this.username = param_username;
this.intervalID = setInterval(this, "traceUsername", 1000, this.username);
}
function traceUsername(str:String) {
trace(this.username+" is "+getTimer()/1000+" seconds old, happy birthday.");
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート