ActionScript3で乱数を取得しなおかつ隣とかぶらない続き
以前この質問をさせてもらったのですが、http://okwave.jp/qa/q6030004.html
前回の答えを少しステップアップを目的に処理を一つの関数にすればソースがすっきりできるのではないかと思い以下のようにしてみましたが変数の値が保存されません。
(前回のページを参照:http://okwave.jp/qa/q6030004.html)
function btnClickAction(aaa:int,bbb:int,ccc:int,txt:TextField,ddd:int):void {
var past:int=aaa;
var now:int=bbb;
var nowPartner:int=ccc;
var txtArea:TextField=txt;
var max:int=ddd;
past=now;
//臨時の配列を初期化
var tmpArr:Array=new Array ;
//臨時の配列の要素0~9に数を代入
for (var i:int=0; i<=max-1; i++) {
tmpArr[i]=i+1;
}
//臨時の配列のpast要素を抜きとる
tmpArr.splice(past-1,1);
//臨時の配列のpartPartner要素を抜きとる
for (i=0; i<=tmpArr.length-1; i++) {
if (tmpArr[i]==nowPartner) {
tmpArr.splice(i,1);
}
}
//今のデータを作成
var rnd:int=Math.floor(Math.random()*tmpArr.length);
now=tmpArr[rnd];
//今のデータを表示
txtArea.text=String(now);
}
にして
btn1.addEventListener(MouseEvent.CLICK, btn1Click);
function btn1Click(evt:MouseEvent):void {
btnClickAction(past1,now1,now2,txt1,10);
}
とするとpast1,now1,now2の値が保存されないのです、やはりこの処理は一つの関数にはできないのでしょか?
■制作環境 FlashCS4 ActionScript3
No.1ベストアンサー
- 回答日時:
こんにちは
結論から言うと、引数が参照渡しではないのでpast1,now1,now2に変更後の値が反映されません。
ActionScriptではプリミティブデータ型は値渡しになるので、
渡した後の変更が元の変数に反映されません。
関数内で操作したデータは戻り値によって返したほうがいいのではないでしょうか?
ActionScriptには連想配列があるので、それを利用すれば複数のデータをまとめて返すことも簡単ですね。
引数を参照渡しで渡して、内部で変更をかけるよりも。
関数の戻り値を受け取り、それを操作したほうがわかりやすいかと思います。
プリミティブデータ型がなんだとか、値渡し?参照渡し?などといった部分の説明は省きます。
ご自身で調べてみてください。
がんばってください
プリミティブデータ型、値渡し、参照渡し、あとリファレンスデータ型も調べてみました。
いままでActionScriptの本を何冊も見てきましたが、値渡しや参照渡しなどの説明は書いてありませんでした。
変数の値のやり取りに上記のようなことがあったんですね、これってけっこう基本で大事な部分ですね、また新しい知識を手にいれることができました。
もう一度がんばって関数を完成させたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
potplayerについて質問です
-
Flashをブロックしないで
-
FLASHでゲームを作っていた人は...
-
私のコンピューター上のファイ...
-
Adobe Flash Player
-
URLの/以降だけを入力したいです。
-
スマホでサイトの画像を長押し→...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
ダウンロードしたデジブックはa...
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET の配列の要素数
-
変な質問ですみません、n番目の...
-
配列の要素番号を取得するには?
-
重複しない乱数の生成
-
VBでボタンを押すと画像をラン...
-
DataGridでCTRLキーを押さずに...
-
重複しない乱数整数を発生させる。
-
景品パネルの作り方
-
VB6 複数行のテキストをリスト...
-
ランダム表示を重複させないよ...
-
ランダムに6つの数字を選びその...
-
Flashでランダムクイズゲームを...
-
【数字ランダム】計算問題ラン...
-
複数の変数宣言を、for文で一気...
-
[Objective-c]多次元配列のアク...
-
Vba 配列の中の特定文字列の位...
-
二次元配列
-
データ構造のテキスト保存につ...
-
簡単な当たり判定作りたい
-
絵を描き、その都度のxy座標を...
おすすめ情報