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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     おみくじスクリプト
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
komainu
Åê¹ÆNo.2726
投稿日時: 2004-1-7 19:53
新米
居住地: 大阪
投稿: 14
使用環境:
WinXp、FlashMX2004
おみくじスクリプト
質問です。
昨日からおみくじを作ろうかと思って制作しているんですが、
ランダムの数値を取得して、if文で設定した条件を満たす
フレームに飛ばすように制作しているんですが、
乱数を取得した後、どうしてもフレームの2つ目と3つ目が
交互にしか表示でないんです。
スクリプトの書き方でどこかまずいものがあるのでしょうか?

ご教授お願い致します。

on (release) {
d = Math.random()*100+1;
if (1<=d<=33) {
gotoAndPlay ("daikyou"); //<<2フレーム目がこれ
} else if (34<=d<=66) {
gotoAndPlay ("kiti"); //<<3フレーム目がこれ
} else if (67<=d<=100) {
gotoAndPlay ("daikiti");//<<ここが表示されない
}
}
ゲスト
Åê¹ÆNo.2730
投稿日時: 2004-1-7 20:35
Re: おみくじスクリプト
どうも、こんにちわ

on(release){
d = Math.random()*100+1;
trace(d)
if (1<=d && d<=33) {
gotoAndPlay ("daikyou");
} else if (34<=d && d<=66) {
gotoAndPlay ("kiti");
} else if (67<=d && d<=100) {
gotoAndPlay ("daikiti");
}
}

これでどうでしょうか。
1<=d<=33 の書き方はエラーは出ませんが、ActionScriptとしては正しくないため希望どうり動かなかったのでしょう。

またついでですが、dについて、
 1<=d && d<=33
 34<=d && d<=66
 67<=d && d<=100
の範囲設定では、仮にd=66.5やd=33.4などとなったときに行き先がありませんし理屈上100を上回ることもあるので、
 1<=d<=33
 34<d<=66
 66<d<=101
とするか、
dを設定する段階で
d = Math.floor(Math.random()*100)+1;
とされるのがよいかと思います。
うすあじ
Åê¹ÆNo.2734
投稿日時: 2004-1-7 21:42
職人
居住地: 東京都杉並区
投稿: 211
使用環境:
FlashCS5.5 ,MacOSX 10.6.8
Re: おみくじスクリプト
こんにちは、うすあじです。

先に33で割るなど、シンプルにした方がよいかもしれませんね。

私のところの”おみくじ”を紹介しておきます。

FlashLiteでおみくじのFlaファイルの構造
http://hspcenter.com/flash/505sc/flasc1.html

FlashLiteのおみくじムービー
http://www.hspcenter.com/i/omi505.swf

FlashMX(PC向け)おみくじ
http://hspcenter.com/flash/omikuji.html


----------------
うすあじ(twitter)
うすあじFlash研究所
HSPセンター

nao
Åê¹ÆNo.2738
投稿日時: 2004-1-7 21:59
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: おみくじスクリプト

on (release) {
    d = Math.floor(Math.random()*3);
    if (d == 0) {
    gotoAndPlay ("daikyou");
    } else if (d==1) {
    gotoAndPlay ("kiti"); //<<3フレーム目がこれ
    } else if (d==2) {
    gotoAndPlay ("daikiti");//<<ここが表示されない
    }
}


これでどうでしょうか?

ActionScriptでは
if (1<=d<=33)ではなく
if ((d >= 1) and (d <= 33))
と書きます.

あと,komainuの条件の指定の仕方だと
33.5とか66.3とかが出るとどこにも行かないのでは??


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.2740
投稿日時: 2004-1-7 22:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: おみくじスクリプト
比較論理式は、左辺から評価されます。

(1<=d)<=33

(1<=d)は、dが1以上ならtrue、1より小さればfalseになります。このBoolean(論理)値を数値として扱われると、trueが1、falseは0に変換されます。

(1または0)<=33

1も0も33以下ですので、式の評価はつねにtrueとなります。つまり、いつも"daikyou"です。「交互に表示」される理由がよくわかりません。
引用:
komainuさんは書きました:
乱数を取得した後、どうしてもフレームの2つ目と3つ目が
交互にしか表示でないんです。

on (release) {
    d = Math.random()*100+1;
    if (1<=d<=33) {
        gotoAndPlay ("daikyou"); //<<2フレーム目がこれ
    } else if (34<=d<=66) {
        gotoAndPlay ("kiti"); //<<3フレーム目がこれ
        // [後略]


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

komainu
Åê¹ÆNo.2752
投稿日時: 2004-1-8 10:00
新米
居住地: 大阪
投稿: 14
使用環境:
WinXp、FlashMX2004
Re: おみくじスクリプト
皆さんありがとうございました。
条件文の表現はこう書かないといけないんでですね
&&で条件文を2つにしたところちゃんと動きましたのでご報告いたします。

もっと条件を簡単にしたほうがいいというのも分かっているんですが、
最終的には吉の幅を広く作って、凶と大吉を狭くするつもりですので
このような形にしています。


> 「交互に表示」される理由がよくわかりません。

それが私も分からないので、私も困っていました。
何せ一つしか表示されないのだったら、記述が悪いのかな?
とか思うんですが、何故か中途半端に動くもので、余計に混乱しました。

何でなんだろう?
野中文雄
Åê¹ÆNo.2765
投稿日時: 2004-1-8 17:59
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: おみくじスクリプト
条件の順序を正しく組立てれば、ふたつずつ指定する必要はないと思いますよ(なお、gotoAndPlay()にはthisをつける方がよいでしょう)。
// ButtonまたはMovieClipアクション
on (release) {
	d = Math.random()*100;
	if (d<33) {
		this.gotoAndPlay("daikyou");
	} else if (d<67) {
		this.gotoAndPlay("kiti");
	} else {
		this.gotoAndPlay("daikiti");
	}
}

引用:
komainuさんは書きました:
&&で条件文を2つにしたところちゃんと動きましたのでご報告いたします。

もっと条件を簡単にしたほうがいいというのも分かっているんですが、
最終的には吉の幅を広く作って、凶と大吉を狭くするつもりですので
このような形にしています。

ポストされたスクリプト以外に、原因があると思います。
引用:
何せ一つしか表示されないのだったら、記述が悪いのかな?
とか思うんですが、何故か中途半端に動くもので、余計に混乱しました。

何でなんだろう?


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

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

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