2016-04-03 13 views
0

私は知っている機能繰り返しタスクとして時間を節約するために使用されます。値を返す関数の重要性は何ですか?

var myStar:Star; 

function makeStar(myX:Number, myY:Number):void { 
myStar = new Star(); 
myStar.x = myX; 
myStar.y = myY; 
addChild(myStar); 
} 

makeStar(50,50); 
makeStar(150,150); 

しかし、私の質問は、なぜ数や文字列を返すように関数を使用したいと思います...その使用のどのような重要性:そして私たちは、このような値を指定する関数に引数を渡すことができますか?

答えて

1

質問:あなたのサンプルコードでは、作成する最初の星を、たとえば右に100ピクセル移動するように、どのように操作しますか?

答えはありません(少なくとも簡単な方法ではありません)。 makeStar(..)への2回目の呼び出しで、myStarを上書きしています。

makeStar(..)が、何も代わりにStarのインスタンスを返すとどうなりますか?あなたは今、私たちは両方星、代わりにあなたが作成した最後のものだけを操作することができ、見ることができるように

var firstStar:Star; 
var secondStar:Star; 

function makeStar(_x:Number, _y:Number):Star 
{ 
    var s = new Star(); 
    s.x = _x; 
    s.y = _y; 
    return s; 
} 

firstStar = makeStar(50, 150); 
addChild(firstStar); 
secondStar = makeStar(150, 150); 
addChild(secondStar); 

firstStar.x += 100; 
secondStar.y += 100; 

は、次の例を考えてみましょう。


あなたの質問に答えるには:これらの値を扱うことができるように、関数を通じて値を返します。

+0

ありがとうございました@DodgerThud –

0

このアプローチの不利な点は何ですか?

var myStar:Star; 

function makeStar(myX:Number, myY:Number, Name:String):void { 
    myStar = new Star(); 
    myStar.x = myX; 
    myStar.y = myY; 
    myStar.name = Name; 
    addChild(myStar); 
} 

makeStar(50,50, "firstStar"); 
makeStar(150,150, "secondStar"); 



getChildByName("firstStar").x = 200; 
+1

これは質問に対する回答ではなく、別の質問です。このアプローチの欠点は速度です。 'getChildByName'は、参照を使用するよりも、探しているインスタンスを検索しなければならないため、常に遅くなります。 100万星があり、星65.432を操作したいとします。内部的には、かなりの時間を要する検索アルゴリズムを実行する必要があります。 – DodgerThud

関連する問題