0

ステージに追加するライブラリからのムービークリップはほとんどありません。ムービークリップの内部には、制御したい mc がいくつかあります。これが私のスクリプトです。

if (selectDiffText.text == "Collection 1 Easy")
    {
        var c1_easy:cartoonEasy = new cartoonEasy();
        addChild(c1_easy);
        c1_easy.x = 412;
        c1_easy.y = 400;
        TweenMax.from(c1_easy, 0.5, {alpha:0, ease:Expo.easeOut});
    }
    else if (selectDiffText.text == "Collection 1 Medium")
    {
        var c1_medium:cartoonMedium = new cartoonMedium();
        addChild(c1_medium);
        c1_medium.x = 412;
        c1_medium.y = 400;
        TweenMax.from(c1_medium, 0.5, {alpha:0, ease:Expo.easeOut});
    }
else
    {
        trace("ERROR!");
    }

selectDiffTextが変更された場合、上記のコードはライブラリから特定のムービークリップを読み込みます。

var movieList:Array = [cartoonMedium1,cartoonMedium2,cartoonMedium3,cartoonMedium4,cartoonMedium5,cartoonMedium6];

function getRandomMovie():MovieClip
{
    var index:int = Math.floor(Math.random() * movieList.length);
    var mcClass:Class = movieList.splice(index,1)[0];
    return new mcClass();
}
playGame = getRandomMovie();
addChild(playGame);

c1_medium がステージに追加された場合、c1_medium はライブラリからムービークリップをランダムに 1 つ追加します。

playGame mc内で、mouseTarget.alpha = 0;を実行しました。...どうすればルートレベルから制御できますか? c1_easy にも mouseTarget.alpha=0 があります。

4

1 に答える 1

0

これを簡単に行うには、c1_easy両方c1_mediumとも同じクラスを拡張する必要があります。例えば:

class c1_easy extends CartoonGenericClass{[...]}

class c1_medium extends CartoonGenericClass{[...]}

ではCartoonGenericClass、変数 がありますmouseTarget。getter/setter を使用してこれを公開します。

protected var _mouseTarget:Number;

public function get mouseTarget():Number{
    return _mouseTarget;
}

public function set mouseTarget(value:Number):void{
    // (should probably do some verification on "value" here)
    _mouseTarget.alpha = value;
}

これにより、またはにアクセスできる任意のオブジェクトから変数mouseTarget(アンダースコアがないことに注意してください) にアクセスできます。c1_easyc1_medium

c1_easy.mouseTarget = 0;
c1_medium.mouseTarget = .3;

などなど。これは標準的な OOP であるため、ドキュメントをクラックする時期かもしれません。チッ!

于 2012-04-11T03:10:27.590 に答える