トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     抽選くじの作り方
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
huwaff
Åê¹ÆNo.46722
投稿日時: 2011-1-5 16:37
新米
居住地:
投稿: 6
使用環境:
WinXP,Flash8
抽選くじの作り方
抽選くじを作ろうと思っています。単純に【くじを引く】ボタンをクリックすると、フレームを移動して【A賞 プラズマテレビ】のように賞品名が出るというものです。

ただ、賞品が100以上あるのと、一度出た賞品は再度出ないようにしたいのです。「ここを勉強したら」など、ポイントだけでも結構なので、教えていただけると嬉しいです。(作成してみてまたお伺いしてしまうかもしれませんが...)

どうぞよろしくおねがいします。
野中文雄
Åê¹ÆNo.46723
投稿日時: 2011-1-5 16:47
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 抽選くじの作り方
「一度出た賞品」が「再度出」てよいなら、おできになるのでしょうか。その場合、どのようにつくられますか。→【やり方(スクリプトの書き方)を教えてください
引用:
huwaffさんは書きました:
ただ、賞品が100以上あるのと、一度出た賞品は再度出ないようにしたいのです。「ここを勉強したら」など、ポイントだけでも結構なので、教えていただけると嬉しいです。(作成してみてまたお伺いしてしまうかもしれませんが...)


----------------
 

ひろゆき
Åê¹ÆNo.46724
投稿日時: 2011-1-5 16:48
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 抽選くじの作り方
問題は「考え方」でしょう。
まず「一度出た賞品は再び出ないようにしたい」自体が不明確です。

遊びとしての賞品なのか、本物としての賞品なのかによって、
何をなさりたいのか解釈が変わってきます。

つまり、一度出てしまった賞品は、他の人には出さないという意味なのか、
ある人が引いてしまった賞品は、その人には出さないという意味なのか、
そのあたりのことが不明確です。


----------------
質問する際は、回答者に具体的な情報を与えてください。

huwaff
Åê¹ÆNo.46726
投稿日時: 2011-1-5 18:00
新米
居住地:
投稿: 6
使用環境:
WinXP,Flash8
Re: 抽選くじの作り方
野中文雄さん、ひろゆきさん、早速にありがとうございます。感激してしまいました。
以前に「賞品が5つで、同じ賞品が出てもよい」という条件で作成したFLASHがあります。(根本的に間違っていそうで、恥ずかしくて書けませんでした。すみません。)

------------------------------------

1フレーム目 【くじを引く】ボタン

on (release, keyPress "<Space>"){
i = Math.floor(Math.random()*5);

if (i == 0) {
gotoAndPlay("random_1");
}
if (i == 1) {
gotoAndPlay("random_2");
}
if (i == 2) {
gotoAndPlay("random_3");
}
if (i == 3) {
gotoAndPlay("random_4");
}
if (i == 4) {
gotoAndPlay("random_5");
}

else {}
}

------------------------------------

random1?5ラベルのいずれかに飛び、賞品名を表示するというものです。
これを調整して賞品100個、100フレーム分を用意するとしても、1度引かれた賞品を表示させないようにするにはどのような関数が考えられますでしょうか。

お恥ずかしながら背景ですが、地元の商店街で抽選会が予定されていて、くじはFLASHで大きなスクリーンに映しながら行うことになっています。くじで出た賞品(テレビやタオルなどの物品です。)はそのまま賞品として渡してしまうので、次の人以降がくじを引いた際、同じ賞品が表示されないようにしたいのです。

お手数ですが引き続きよろしくお願いします。
ひろゆき
Åê¹ÆNo.46728
投稿日時: 2011-1-5 18:32
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 抽選くじの作り方
gotoAndPlayよりも、gotoAndStopの方がいいんじゃないかと思いますが、
何故にgotoAndPlayなのか、きっと深い事情が隠されていると思うので、放置しておきます。

ただ、100フレーム分、if文を記述するのは、面倒だと思うので、
on (release, keyPress "<Space>"){
	var i:Number = Math.floor(Math.random()*5);
	var frame:String = "random_" + (i + 1);
	gotoAndPlay(frame);
}
でいいと思いますが。


まず、どの程度スクリプトを理解されているのか示されていませんので、
全く理解されていないという前提で、
ヒントだけでいいということなので、

「配列」を学習してください。以上。


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.46729
投稿日時: 2011-1-5 18:42
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 抽選くじの作り方
ムービーを1度再生したら抽選は最後まで行う、つまり抽選の経過を保存する必要がないという前提でよろしいですね。その場合今のやり方に合わせるなら、移動先フレームラベルすべてを配列に入れ、ランダムに並べ替えてから順に取出してフレームを切替えればよいでしょう。

参考: 拙著『ActionScript 3.0プロフェッショナルガイド』T.1.2「配列エレメントをランダムに並べ替える」(PDF)

ちなみに、if条件を並べるのでなく、else ifと組合わせた方が無駄は省けます。
引用:
huwaffさんは書きました:
以前に「賞品が5つで、同じ賞品が出てもよい」という条件で作成したFLASHがあります。(根本的に間違っていそうで、恥ずかしくて書けませんでした。すみません。)

------------------------------------

1フレーム目 【くじを引く】ボタン
on (release, keyPress "<Space>"){
	i = Math.floor(Math.random()*5);

	if (i == 0) {
		gotoAndPlay("random_1");
	}
	if (i == 1) {
		gotoAndPlay("random_2");
	}
	if (i == 2) {
		gotoAndPlay("random_3");
	}
	if (i == 3) {
		gotoAndPlay("random_4");
	}
	if (i == 4) {
		gotoAndPlay("random_5");
	}

	else {}
}

random1?5ラベルのいずれかに飛び、賞品名を表示するというものです。
これを調整して賞品100個、100フレーム分を用意するとしても、1度引かれた賞品を表示させないようにするにはどのような関数が考えられますでしょうか。


----------------
 

コマツ
Åê¹ÆNo.46730
投稿日時: 2011-1-6 10:14
職人
居住地: 東京都葛飾区
投稿: 356
使用環境:
windows7
CS5.5 CS6
Re: 抽選くじの作り方
huwaffさん、 こんにちは。

野中さんやひろゆきさんが書いているように、配列を使いこなせれば望みのものができそうに思います。

配列を使う意味がわかれば、以下のフォーラムの以前のスレッドも参考になるかもしれません。



ランダムに配列等から値を取得
huwaff
Åê¹ÆNo.46750
投稿日時: 2011-1-6 16:31
新米
居住地:
投稿: 6
使用環境:
WinXP,Flash8
Re: 抽選くじの作り方
みなさま、ありがとうございます。「配列」ということで、調べてみたところまさに実現したかったことです。色々な使い道がありそうで、勉強になりました。
また、野中さんからいただきましたPDF内の「初めにシャッフルして運命を決める」には目からうろこでした。
そして過去ログもあったのですね...大変失礼致しました。みなさまありがとうございます。

参考にさせていただきながら悪戦苦闘、ここまでできましたが...。

--------------------
1フレーム目
--------------------

var frame:Array = ["random_1","random_2","random_3","random_4","random_5"]

function xShuffleArray(frame:Array) {
var i = frame.length;
while(i) {
var nRandom = Math.floor(Math.random()*(i--));
var temp:Object = frame[i];
frame[i] = frame[nRandom];
frame[nRandom] = temp;
}
}

trace(frame);

--------------------
【くじを引く】ボタン
--------------------

on (release) {
var link = frame.shift();
gotoAndStop(link);
}

--------------------

trace(frame); で見てみると、ランダムにならずそのまま random_1?5 の順番で表示されます。
ランダムに並んだ配列を、取り出す方法になかなか行き着きません。

もう少しのような気がするのですが、ダメなところを教えていただけますでしょうか。
ひろゆき
Åê¹ÆNo.46751
投稿日時: 2011-1-6 16:42
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 抽選くじの作り方
スクリプトは、見やすいように、[code][/code]で囲んで、掲載しましょう。
また、スクリプトはコードを貼り付けるだけでなく、
どこに記述したとか、どんなインスタンスをどこに配置してあるかの情報も必要です。
第三者が再現しやすいような説明を心がけてください。

くじを引くボタンは、ボタン・インスタンスなのか、ムービークリップ・インスタンスなのかによって、
スクリプトを変えなければならないので、それも明記すべきでしょう。


xShuffleArray()が実行されていませんが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.46752
投稿日時: 2011-1-6 16:44
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 抽選くじの作り方
関数(function)の定義については理解されていますか?拙著『ActionScript 3.0プロフェッショナルガイド』の紹介ページに公開しているChapter 2の「PDFプレビュー」(全58ページ)に解説しています。
引用:
huwaffさんは書きました:
--------------------
1フレーム目
--------------------
var frame:Array = ["random_1","random_2","random_3","random_4","random_5"]

function xShuffleArray(frame:Array) {
	var i = frame.length;
	while(i) {
		var nRandom = Math.floor(Math.random()*(i--));
		var temp:Object = frame[i];
		frame[i] = frame[nRandom];
		frame[nRandom] = temp;
	}
}

trace(frame);

...[中略]...
trace(frame); で見てみると、ランダムにならずそのまま random_1?5 の順番で表示されます。


----------------
 

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops