TechHUB:Flash1:07:参照渡し
forked from TechHUB:Flash1:06:Display List (diff: 90)
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;
}
}
}
