FLASH初心者です。携帯用のFLASHを作成しているのですが、FLASHムービーの終了後にボタンを押すと他のページに飛ぶようにするために以下のようなスクリプトを書きました。
on(keyPress"<enter>"){
getURL("http://●●●●●●●●");
}
ここまではよかったのですが、次にURLのあとにパラメーターを付け、そのパラメーターをランダムで表示させて飛ぶようにさせたいのです。以下のような感じです。
on(keyPress"<enter>"){
getURL("http://●●●●●●●●?rmd=○○○");
}
※ ○○○は3桁の数字がランダムで入ります。
この場合、どのようなスクリプトを書けばいいのでしょうか?いろいろなサイトで調べて試してみたのですがどうしてもうまくいきません。どうか教えてください。
No.1ベストアンサー
- 回答日時:
携帯用Flashと書かれましても FlashLite のバージョンがわかりません。
バージョンによって答えは変わると思います(この場合も完璧に変わります)。
on(keyPress"<enter>") を使われていらっしゃるところから見て,
勝手に,FlashLite1.0 または 1.1 のご質問だと決めて,
その FlashLite1.0 または 1.1 用SWFをパブリッシュする場合を中心に書きます。
それと,
>※ ○○○は3桁の数字がランダムで入ります。
これも,
本当に3桁のランダムな数でよろしいのでしょうか。
よくわからないので,3つの場合について回答します。
==========================================
◎ 本当に3桁のランダムな数を代入する場合
本当に3桁のランダムな数は,
100以上 999未満 の数になるので,
random関数 を使って,
ボタンのスクリプトを次のようにすれば良いと思います。
----------------------------------
on (keyPress "<Enter>") {
getURL("http://●●●?rmd=" add (100+random(900)));
}
----------------------------------
random関数 と Mathクラスのrandomメソッドとは違います。
例えば,
random(5)
は 0~4 の5つの整数からランダムな値を返します。
今の(FlashLite2.0以上の)ActionScriptでは
Math.floor(Math.random()*5)
と同じ意味になります。
random(10)
(今の Math.floor(Math.random()*10) )
だと 0~9 の10個の整数からランダムな値を返します。
したがって,
10 + random(10)
(今の 10+Math.floor(Math.random()*10) )
では 10~19 の10個の整数からランダムな値を返します。
つまり,
100+random(900)
(今の 100+Math.floor(Math.random()*900) )
だと 100~999 の900個の整数からランダムな値を返すことになります。
add は 文字列連結演算子です。
1 + 5 は 6 になりますが,
1 add 5 は "15" になります。
数値加算演算子 と 文字列連結演算子 が分かれているのは結構便利なことが多いです。
今の ActionScript では,
数値加算も文字列連結も区別無く,同じ 「+」 しかないので不便な場合も少しあります。
==========================================
◎ ランダムな3つの数字を代入する場合
上のものは3桁の数ですから「12」や「5」や「0」などは含みません。
「012」や「005」や「000」など,そういうものも含む場合です。
この場合,
ボタンのスクリプトを次のようにすれば良いと思います。
----------------------------------
on (keyPress "<Enter>") {
rand = random(1000);
if (rand<=9) {
rand = "00" add rand;
} else if (rand<=99) {
rand = "0" add rand;
}
getURL("http://●●●?rmd=" add rand);
}
----------------------------------
==========================================
◎ 3桁のランダムな数が選択肢になっている場合
この場合は,例えば,
「007」と「110」と「119」と「777」と「999」という3桁の数があったとして,
この中から ランダムにどれかを代入 する場合です。
まず,
ボタンが存在するフレーム(_root の フレーム1 など)に,
次のような,
「文字列+連番」の変数名とその値のデータを用意しておきます。
-----------------
para0 = "007";
para1 = "110";
para2 = "119";
para3 = "777";
para4 = "999";
-----------------
そして random関数 で,上の場合 0~4 のランダムな数を取得して,
eval関数 でその変数にアクセスするのが一般的です。
-------------------------------------
on (keyPress "<Enter>") {
getURL("http://●●●?rmd=" add eval("para" add random(5)));
}
-------------------------------------
eval関数は今でも(FlashLite2.0以上でも)使えますが,あまり使いません。
また,eval云々の前に,
変数をダラダラ並べるより配列を使うと思います。
さらに,
Enter キーが押されることとは全く無関係なボタンを作成するという変なこともないと思います。
これらのことを考えると,
今の(FlashLite2.0以上の)ActionScriptでは,
ボタンを作成せずにフレームに次のように書くと思います。
-------------------------------------
// 配列 para の作成
var para:Array = new Array();
para[0] = "007";
para[1] = "110";
para[2] = "119";
para[3] = "777";
para[4] = "999";
// キー監視用にオブジェクトを作成
var myListener:Object = new Object();
// 何かキーが押されたときの動作を定義
myListener.onKeyDown = function() {
// もし押されたキーが Enter であれば
if (Key.getCode() == Key.ENTER) {
trace("http://●●●?rmd="+para[Math.floor(Math.random()*5)]);
}
};
// オブジェクトをKeyクラスのリスナーとして登録
Key.addListener(myListener);
--------------------------------------
※注意
このスクリプトの場合,
FlashLite2.0 以上用のSWFをパブリッシュする設定にするだけでなく,
ActionScriptのバージョンも 2.0 に指定してパブリッシュする必要があります。
まだ「場合」が出てきそうな気もしますが,
FlashLite1.0 または 1.1 を中心に,
FlashLite2.0以上の場合をまじえながら,
3つの場合を回答してみました。
ありがとうございます!バージョンはFlashLite1.1を使用しておりましたが無事動作しました。とても丁寧かつ分かりやすい解説で大変勉強になりました。本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- マルウェア・コンピュータウイルス FlashPlayerの削除とマルウェア感染について 5 2023/02/23 20:52
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- デスクトップパソコン ホームページビルダー15 1 2023/05/30 12:30
- ホームページ作成・プログラミング Adobe FLASH に代わるソフトはありますか? 4 2022/09/27 19:35
- Flash 私のコンピューター上のファイルが開けられない。 1 2022/07/19 18:15
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- USBメモリー・SDカード・フラッシュメモリー プリンタのドライバーをUSB Flash Diskに保存したい。 4 2023/05/23 23:30
- Excel(エクセル) EXCEL の判定式をお教えください 3 2022/06/08 14:37
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
potplayerについて質問です
-
フラッシュゲームアーカイブ2
-
VBAのコンボボックスの年月表示...
-
キャラクター設定について
-
レジリエンス 変換キーが作動し...
-
arduino プログラムについて
-
iPhoneです。 Adobeフラッシュ...
-
FLASH MX で作成した、flashやA...
-
アメブロで音声ファイルを貼る方法
-
何種類の値があるかを調べる方...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python: 直角三角形の種類を求...
-
c++ cmathとmath.h
-
=FREQUENCY(範囲,{59,69,74}) ...
-
プログラム開始から 2秒毎に ...
-
三辺の長さから角度を求めたい...
-
ミリ秒までカウントできるタイマー
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
VB.NET の配列の要素数
-
TextChangeイベントが発生しない
-
配列の要素番号を取得するには?
-
#define 文
-
VBでボタンを押すと画像をラン...
-
重複しない乱数整数を発生させる。
-
ifdefとenum
-
LRESULTとHRESULT
-
変な質問ですみません、n番目の...
-
エラー438でオブジェクトの...
-
DataGridでCTRLキーを押さずに...
-
ATLについて
おすすめ情報