TechHUB:Flash1:07:参照渡し

by yprops forked from TechHUB:Flash1:06:Display List (diff: 90)
♥0 | Line 81 | Modified 2011-03-25 16:29:08 | MIT License
play

ActionScript3 source code

/**
 * Copyright yprops ( http://wonderfl.net/user/yprops )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/un09
 */

// forked from yprops's TechHUB:Flash1:06:Display List
package {
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;
    public class FlashTest extends Sprite {
        
        
        //変数----------------------------
        
        private var myText :TextField;
        
        private var count :int;
        
        private var ataiNum :Number;
        private var ataiStr :String;
        private var sansyouSp :Sprite;
        private var sansyouAr :Array;
        
        
        //コンストラクタ--------------------
        
        public function FlashTest() {
            var i :int
            var sp :Sprite;
            initOutput();
            count = 0;
            
            //値渡し型の初期化
            ataiNum = 1;
            ataiStr = "あいうえお";
            
            //参照渡し型の初期化
            sansyouAr = ["■","■"];
            sansyouSp = makeSprite(0x990000, 100);
            sansyouSp.x = 250;
            sansyouSp.y = 200;
            addChild(sansyouSp);
            
            output("初期値-----------");
            output("ataiNum  :  " + ataiNum);
            output("ataiStr  :  " + ataiStr);
            output("sansyouAr:  " + sansyouAr.toString());
            output("sansyouSp.x :  " + sansyouSp.x);
            
            //開始
            addEventListener(MouseEvent.CLICK, update);
            update();
        }
        
        
        //ハンドラ--------------------------
        
        private function update(event:Event = null) :void{    // = null とすると、パラメータを別に渡さなくてよくなる
            //変数をメソッドに渡して加工・表示してもらう
            change(ataiNum, ataiStr, sansyouAr, sansyouSp);
            
            //元の変数を表示してみる > 値渡しのものは元と変わらず、参照渡しのものは変化している
            output("\n改めて元の変数を表示-----------");
            output("ataiNum  :  " + ataiNum);
            output("ataiStr  :  " + ataiStr);
            output("sansyouAr:  " + sansyouAr.toString());
            output("sansyouSp.x :  " + sansyouSp.x);
            output("\n===============================");
        }
        
        
        //参照やら値やらを渡されるメソッド------------
        
        private function change(
            num :Number,
            str :String,
            ar :Array,
            sp :Sprite
        ) :void
        {
            output("\ntest" + count + " -------------");
            count++;
            
            //適当に加工-------------------
            num += 10;
            str += "かきくけこ";
            ar.push(ar.length);
            sp.x += 10;
            
            output("\nメソッドに渡して加工-----------");
            output("num  :  " + num);
            output("str  :  " + str);
            output("ar   :  " + ar.toString());
            output("sp.x :  " + sp.x);
        }
        
        
        
        
        
        //その他メソッド--------------------
        
        private function makeSprite(color :uint, size :Number) :Sprite{
            var sp :Sprite = new Sprite();
            var gra :Graphics = sp.graphics;
            gra.beginFill(color);
            gra.drawRect(size / -2, size / -2, size, size);
            gra.endFill();
            return sp;
        }

        private function initOutput() :void{
            myText = new TextField();
            myText.width = 400;
            myText.height = 400;
            myText.background = true;
            myText.border = true;
            addChild(myText);
        }
        private function output(obj :Object) :void{
            myText.appendText(obj.toString() + "\n");
            myText.scrollV = myText.maxScrollV;
        }


    }
}