2012-04-11 6 views
0

ステージに追加するライブラリからのムービークリップはほとんどありません。ムービークリップの内側には、コントロールしたいmcがあります。ここにスクリプトがあります。子どものムービークリップを制御するAS3

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

letがc1_mediumがステージに追加された場合、c1_mediumもランダムにその上にライブラリからムービークリップの1を追加しますと言います。 playGame MCの内部

、私はmouseTarget.alpha = 0しました。 ...どのように私はそれをルートレベルから制御できますか? c1_easyにはmouseTarget.alpha = 0もあります。

+0

このコードを正確に実行しますか? – Jordan

+0

それぞれのc1_easyとc1_mediumにはmouseTargetというmcがありますが、毎回c1_easyまたはc1_mediumのいずれかをステージにロードしたばかりです。私は、mouseTargetのアルファ値をコントロールしたいと思います。 レベルは私が何をしたい、このステージのように> c1_easy/c1_medium> playGame である私は、クラス内のコードに非常に精通していないよ申し訳ありませんがいずれかc1_easyまたはc1_medium – pizza0502

答えて

0

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

class c1_easy extends CartoonGenericClass{[...]} 

class c1_medium extends CartoonGenericClass{[...]} 

CartoonGenericClassでは、あなたは変数mouseTargetを持っているでしょう。あなたがゲッター/セッター使用して、この公開を行います。

c1_easy.mouseTarget = 0; 
c1_medium.mouseTarget = .3; 
:これは変数 mouseTargetへのアクセスを許可します

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; 
} 

いずれかc1_easyまたはc1_mediumにアクセスできる任意のオブジェクトから(何のアンダースコアが存在しないことに注意してください)

などです。これは標準のOOPであるため、ドキュメントをクラックさせるタイミングになることがあります。 HTH!

+0

によって追加playGameでmouseTargetを制御するには、root /舞台からです。 ..それはタイムラインでコード化するためにいつか?私はタイムラインで非常に良いコーディングではない... – pizza0502

+0

確かに、私は思います。同じメソッドではありませんが、ルートオブジェクトを経由してステージ上にあるオブジェクトにアクセスすることはできます。 。 。すべての表示オブジェクトにアクセスできます。私はしばらくしていませんが、フォーマットは '_root.c1_whatever.mouseTarget'と考えています。しかし、 'c1_whatever'をルートに追加して、他のオブジェクトには追加しないよう注意しなければなりません。したがって: '_root.addChild(c1_whatever)'。ただし、ActionScript 3.0を学ぶことで膨大な利益を得ることができます。 FlashDevelopを使い始めてみましょう。また、「Hello world」チュートリアルを読んで始めましょう。 – iND

関連する問題