トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     関数をメインタイムライン上に集結させたいの
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.3455
投稿日時: 2004-2-2 16:12
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 関数をメインタイムライン上に集結させたいの
new演算子で生成したオブジェクトインスタンスは、その参照を(通常変数またはプロパティとして)保持しないかぎり消滅します。しかし、以下のステートメントでは、FadeInオブジェクトに対して、(スーパークラスの)メソッドexecuteを呼出しています。
引用:
「どこかに生まれた FadeIn オブジェクトの行方」です。
FadeInオブジェクトはどこかに存在したままになっているのでしょうか?
new FadeIn(my_mc, 3).execute();

で、生まれたオブジェクトの行方が気になってます。

Fade.executeメソッドは、オブジェクトインスタンスへの参照であるthisをローカル変数oに代入し、oはMovieClipインスタンスに設定されたMovieClip.onEnterFrameイベントハンドラメソッドのコールバック関数内で使用されています。

したがって、オブジェクトインスタンスは、Activationオブジェクトにプロパティoのかたちで設定され、コールバック関数内から参照が保持されている間は破棄されません。そのため、MovieClip.onEnterFrameメソッドがdeleteされるまでは存続することになります。
//抽象クラス
function Fade(mc, rate) {
    // [後略]
Fade.prototype.execute = function() {
    var o = this;
    this.mc.onEnterFrame = function() {
        if (o.isInRange()) {
            // [中略]
        } else {
            delete this.onEnterFrame;
            // [後略]
//フェードイン用具象クラス
function FadeIn(mc, rate){
    // [後略]
FadeIn.prototype = new Fade();
FadeIn.prototype.isInRange = function() {
    // [後略]


----------------
 

kombinat
Åê¹ÆNo.3459
投稿日時: 2004-2-2 16:55
新米
居住地: 目黒区
投稿: 13
使用環境:
on 10.3
Re: 関数をメインタイムライン上に集結させたいの
と言う事は、
new FadeIn(my_mc, 3).execute();

のイメージは、「オブジェクトインスタンスのメソッド(を実行する人)を生成」と言う感じになるのでしょうか?
従って、メソッドが有効でなくなると自動的に消去される、というイメージ。

引用:
Fade.executeメソッドは、オブジェクトインスタンスへの参照であるthisをローカル変数oに代入し、oはMovieClipインスタンスに設定されたMovieClip.onEnterFrameイベントハンドラメソッドのコールバック関数内で使用されています。

したがって、オブジェクトインスタンスは、Activationオブジェクトにプロパティoのかたちで設定され、コールバック関数内から参照が保持されている間は破棄されません。そのため、MovieClip.onEnterFrameメソッドがdeleteされるまでは存続することになります。

頭の中のイメージがかなりクリアになった気がします。
加藤達雄
Åê¹ÆNo.3461
投稿日時: 2004-2-2 16:59
新米
居住地: 東京
投稿: 24
使用環境:
Win XP Pro
MX Pro 2004
Re: 関数をメインタイムライン上に集結させたいの
引用:

kombinatさんは書きました:
と言う事は、
new FadeIn(my_mc, 3).execute();

のイメージは、「オブジェクトインスタンスのメソッド(を実行する人)を生成」と言う感じになるのでしょうか?
従って、メソッドが有効でなくなると自動的に消去される、というイメージ。

そういうことになります。
その「実行する人」に参照を与えても与えなくても、仕事はしてくれるというわけです。そして、execute()実行後、つまりそれにまつわる処理すべてが終ったとき、消えてくれます。
« 1 2 (3)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops