• 締切済み

Flashで日毎に違う数字を外部テキストで表示

初めて投稿させて頂きます。 FLASHで抽選くじのようなものを作ろうとしているのですが つまづいてしまいましたので、アドバイスを頂けたら幸いです。 内容は以下の通りです。 こちらの指定した電話番号の下4桁の数字で、当たりの出る抽選クジを作りたいと思っています。 『例)今日は、下4桁が1234の方に◯◯をプレゼント!』という感じです。 4桁の数字は日毎に変わるようにしたいです。(1、2週間分の数字をストックしておきたいです。) 更新しやすいように、4桁の数字は外部のテキストを読み込ませたいと思っております。 スタートボタンを押すと、パラパラと適当な乱数が表示された後にその日の4桁が表示される。といった方法にしたいと思っています。 説明が下手ですみません。 よろしくお願い致します。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

~~~ 回答 その2 ~~~ というわけで 回答 その1 の続きです。 用意するデータは 回答 その1 と同じで 次に Flash CS3 以上をお持ちで ActionScript 3.0 を使って Flash Player 9 以上用の SWF をパブリッシュする場合の フレームに書く(コピペする)スクリプト例を書きます↓。 //======================================= //今日の番号を入れる変数 num_str を宣言 var num_str:String; //今の Date オブジェクトを作成 var now_date:Date = new Date(); //1970年からの経過ミリ秒を取得(キャシュ参照防止用) var now_ms:Number = now_date.getTime(); //今の年を取得 var now_y:int = now_date.getFullYear(); //今の月(日本人用の月)を取得 var now_m:int = now_date.getMonth() + 1; //今の日を取得 var now_d:int = now_date.getDate(); //今の「年/月/日」の文字列を作成 var now_str:String = now_y + "/" + now_m + "/" + now_d; //(試しに出力) //trace(now_str); //テキストのリクエストを作成(キャシュ参照防止策無し) var req:URLRequest = new URLRequest("number.txt"); //テキストのリクエストを作成(キャシュ参照防止策入り) //var req:URLRequest = new URLRequest("number.txt?n=" + now_ms); //テキストロード用の URLLoader インスタンスを作成 var ld:URLLoader = new URLLoader(); //テキストロードが完了したときに関数 onLoadComp を実行 ld.addEventListener(Event.COMPLETE, onLoadComp); //関数 onLoadComp を定義 function onLoadComp(e:Event) { //このイベントリスナーの登録を削除 ld.removeEventListener(Event.COMPLETE, onLoadComp); //ロードしたデータの改行コードを \n に統一 var tmp_str:String = ld.data.split("\r\n").join("\n").split("\r").join("\n"); //2次元化したロードデータ入れる配列 var data_arr:Array = new Array(); //改行コードで分割して配列にする var tmp_arr = tmp_str.split("\n"); //配列 tmp_arr の要素数分ループ for (var i:int = 0; i<tmp_arr.length; i++) { //配列の要素を「,(カンマ)」で区切って2次元配列にする data_arr[i] = tmp_arr[i].split(","); } //(試しに最初のデータだけ出力) //trace(data_arr[0][0]); //trace(data_arr[0][1]); //2次元配列 data_arr の要素数分ループ for (i=0; i<data_arr.length; i++) { //data_arr[?][0] が 今の「年/月/日」 と同じであれば if (data_arr[i][0] == now_str) { //最初に用意した変数 num_str に data_arr[i][1] の値を代入 num_str = data_arr[i][1]; //関数 showNumber を実行 showNumber(); //この関数を抜ける return false; } } //最初に用意した変数 num_str に「該当番号無し」 を代入 num_str = "該当番号無し"; //関数 showNumber を実行 showNumber(); } //テキストのロード開始 ld.load(req); //--- 以下は私が勝手に作った状況 --- //テキストフィールド num_txt の宣言 var num_txt:TextField; //関数 showNumber の定義 function showNumber():void { //テキストフィールド num_txt を作成 num_txt = new TextField(); //num_txt を適当に設定 num_txt.x = 10; num_txt.y = 10; num_txt.width = 80; num_txt.height = 24; num_txt.background = true; num_txt.border = true; //num_txt をこのタイムラインに配置 addChild(num_txt); //num_txt に今日の番号を表示 num_txt.text = num_str; } //======================================= 同じくこれでムービープレビューやパブリッシュしてもらうと ステージ上に数字が表示されると思います。 回答 その1 のスクリプトには 次のような部分があります。 //テキストのロード開始(キャシュ参照防止策無し) lv.load("number.txt"); //テキストのロード開始(キャシュ参照防止策入り) //lv.load("number.txt?n=" + now_ms); 回答 その2 でそれに該当するのは次の部分です。 //テキストのリクエストを作成(キャシュ参照防止策無し) var req:URLRequest = new URLRequest("number.txt"); //テキストのリクエストを作成(キャシュ参照防止策入り) //var req:URLRequest = new URLRequest("number.txt?n=" + now_ms); 両者とも 1つ目のスクリプトだけを生かして 2つ目のスクリプトを // でコメントアウトしていますが, これは2つ目を生かすとムービープレビューではロードに失敗してエラーになるからです。 HTML と SWF とを同時にパブリッシュするなどして HTML を見ればエラーは起こらないと思います(もしくはアップするか)。 アップして使う場合は逆に 1つ目のスクリプトを // でコメントアウトして 2つ目のスクリプトだけを生かすようにした方が良いです。 外部データを Flash にロードするときには ブラウザのキャッシュ(一時ファイル)を読みに行ってしまうことが頻繁に起こります。 1週間に1度くらい更新するものでしたら キャシュ参照防止策を入れた方が良いです。   > 初めて投稿させて頂きます。 とのことですが, 回答を2つに分けてもこの程度の回答しかできないのです。 ですから 漠然としたものを丸投げ的に質問するのではなく なるべくもっと具体的なことを考えて もっとピンポイントで質問される方が良いと思います。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

~~~ 回答 その1 ~~~ スクリプトだけでも文字数制限を超えるため回答を2つに分けます。 お持ちの Flash作成 ソフトとバージョンも, ActionScript のバージョンも, ターゲットとする Flash Player のバージョンも, とにかくバージョン関係を全く書かれていませんね。 これではまともな回答などほとんど不可能です。 バージョンを書かれていないため 以下では一応2パターンのバージョン用の回答を書きます。 2パターンのみですが字数制限を超えます。 またいわゆる「丸投げ(細部の詰めは他人任せ)」に近い部分もありますよね。 > スタートボタンを押すと、 > パラパラと適当な乱数が表示された後にその日の4桁が表示される。 これは具体的に どこにどのように表示させるのかがなどがわかりません。 また仮にこの内容が具体的にわかったとしても この部分を入れているとさらに文字数が増えるので この演出部分は勝手に無視させていただきます。   === === === === === 外部テキストデータは 「number.txt」というファイル名で Flash(SWF)ファイル や HTML と同じフォルダに置くものとします。 その「number.txt」の中身は 次のようなデータにすることにします。 2012/7/21,0123 2012/7/22,1234 2012/7/23,2345 2012/7/24,3456 2012/7/25,4567 2012/7/26,5678 2012/7/27,6789 データの形は 4桁年/月/日,4桁数字 これの改行区切りです。 数字は全て半角で 「/」は半角スラッシュ 「,」は半角カンマ(コンマ)です。 一応日付順にしていますが順番はどうでも良いです。 またデータ個数(行数)も1個以上あれば何個でも良いです。 ココに書いた上のデータをコピペした場合 ひょっとしたら行頭や行末にスペースが入るかもしれませんが スペースは一切ナシです。 また 2012/07/03,9876 のように月や日の1桁目に0を入れるのはダメです。 以上のようなものを用意したとして Flash MX 以上をお持ちで ActionScript 1.0 を使って Flash Player 6 以上用の SWF をパブリッシュする場合の フレームに書く(コピペする)スクリプト例を書きます↓。 //======================================= //今日の番号を入れる変数 num_str を宣言 var num_str; //今の Date オブジェクトを作成 var now_date = new Date(); //1970年からの経過ミリ秒を取得(キャシュ参照防止用) var now_ms = now_date.getTime(); //今の年を取得 var now_y = now_date.getFullYear(); //今の月(日本人用の月)を取得 var now_m = now_date.getMonth()+1; //今の日を取得 var now_d = now_date.getDate(); //今の「年/月/日」の文字列を作成 var now_str = now_y + "/" + now_m + "/" + now_d; //(試しに出力) //trace(now_str); //テキストロード用の LoadVars オブジェクトを作成 var lv = new LoadVars(); //テキストロードが完了したときの動作を定義 lv.onData = function(load_data) { //ロードしたデータの改行コードを \n に統一 var tmp_str = load_data.split("\r\n").join("\n").split("\r").join("\n"); //2次元化したロードデータ入れる配列 var data_arr = new Array(); //改行コードで分割して配列にする var tmp_arr = tmp_str.split("\n"); //配列 tmp_arr の要素数分ループ for (var i = 0; i<tmp_arr.length; i++) { //配列の要素を「,(カンマ)」で区切って2次元配列にする data_arr[i] = tmp_arr[i].split(","); } //(試しに最初のデータだけ出力) //trace(data_arr[0][0]); //trace(data_arr[0][1]); //2次元配列 data_arr の要素数分ループ for (i=0; i<data_arr.length; i++) { //data_arr[?][0] が 今の「年/月/日」 と同じであれば if (data_arr[i][0] == now_str) { //最初に用意した変数 num_str に data_arr[i][1] の値を代入 num_str = data_arr[i][1]; //関数 showNumber を実行 showNumber(); //この関数を抜ける return false; } } //最初に用意した変数 num_str に「該当番号無し」 を代入 num_str = "該当番号無し"; //関数 showNumber を実行 showNumber(); }; //テキストのロード開始(キャシュ参照防止策無し) lv.load("number.txt"); //テキストのロード開始(キャシュ参照防止策入り) //lv.load("number.txt?n=" + now_ms); //--- 以下は私が勝手に作った状況 --- //関数 showNumber の定義 function showNumber() { //テキストフィールド num_txt を作成 createTextField("num_txt", 0, 10, 10, 100, 24); //num_txt を適当に設定 num_txt.background = true; num_txt.border = true; //num_txt に今日の番号を表示 num_txt.text = num_str; } //======================================= ステージ上には特に何も用意しなくて良いです。 スクリプトをコピペした状態で 「number.txt」と同じフォルダに FLAファイル を保存し ムービープレビューやパブリッシュしてもらうと ステージ上に数字が表示されると思います。   ~~~ 回答 その2 へ続く~~~

関連するQ&A

  • FLASHで外部テキストを表示するには

    こんにちは。 現在FLASHで、あるボタンをクリックすると吹き出しが出て、その吹き出しの中に外部テキストを表示させる、というものを作ろうとしています。 吹き出しはムービークリップシンボルで作成し、ダイナミックテキストブロックを配置したフレームに「loadVariablesNum("text1.txt", 0);」というアクションを追加しました。 そしてボタンには「on (release)」イベントを追加し、クリックすると吹き出しシンボルが表示されるようにしました。 その結果、ボタンをクリックすると吹き出しは表示されるのですが、テキストが全く表示されません。スクリプト内で指定した外部テキストのファイル名および階層は間違っていないようです。 このように、うまく外部テキストを読み込みできない原因として、何か考えられることはありますでしょうか? 説明が下手で申し訳ありませんが、ご教示いただけると助かります。 よろしくお願いいたします。

  • Flashのくじメールは当たるのでしょうか?

    楽天などから送られてくるスピードくじがありますが、特定のURLにジャンプさせられて、 そこで自動的にフラッシュアニメでくじがスタートします。 今まではずれしか出たことがありませんが、 flash上で確率を設定しているのならば、 何度もリロードすればいつか当たると思いますが、 それだとそういうことをする人が大勢出てくると思うので、 最初から当たりとハズレのURLを分けているということなのでしょうか。 そもそもあのくじで当たった人はいますか?

  • 日時を表示させるFlashのサンプル ActionScript2.0用

    Flash MXを最近始めました。(^^; 恐らくActionScriptは2.0なので、皆さんから、ActionScript3.0から始めればと言われると思いますが、これしかないので・・・ 今日と昨日と明日の日付を表示させる簡単なFlashを作成しようとおもっているのですが、 中々うまくいきません。 あと2桁の乱数も表示させたいです。 できたとしてもFlashが動作するローカル環境の日時が間違っていたら、今日の日付もおかしいのでしょうか? 結局、ActionScriptはJavascriptということでしょうか?

  • 数字の下桁を使った抽選方法について

     商店街で富くじのキャンペーンをしました。300近くある店のそれぞれに何番のくじが配布されたかのデーターはエクセルに入力してあります。(たとえば25983~32444というふうに)  組合としては,どこの店に何等が何本当たったかを把握し補助金を出そうと考えています。  1等は下四桁,2等は下三桁というように下桁の数値で当たりを設定したいのですが,たとえば下三桁の数値243を入力したら即座にどの店に何本の当たりが出たかがわかるような,関数なりうまい方法はないでしょうか。よろしくお願いします。

  • エクセルでの数字の表示

    エクセルでの数字の表示において、下3けたをカットするような、表示方法はありますか?たとえば、123456とあるセルの表示を123としてくれるようなものです。できれば、セルの書式設定の表示形式で作れると一番好ましいのですが、教えていただけますか?

  • VBAマクロに詳しい方助けてください!

    Excel2007で乱数を使ったマクロを組んだのですが、同じ数字が繰り返し出力されて困っています。詳しい方、どうか解明をお願いします。 やりたいこと: 100分の1の確率で抽選を繰り返し、当たり(乱数で1が発生したら当たりとする)がでたら「何回目の抽選で当選したか」をセルA1に記入し、セルA2に移行して同じ抽選をやり直す。その作業をA10000まで続ける。 作成したマクロ: Sub 百分の一抽選() Dim r, cou, ransuu As Integer For r = 1 To 10000 'A1 からA10000まで繰り返す  For cou = 1 To 10000  '↑100分の1の確率で当たり(1を当たりとする)が出るまで繰り返す  Randomize '乱数初期化  ransuu = Int(Rnd() * 100) + 1 '1から100までの乱数を作成  If ransuu = 1 Then '乱数で1が発生したら当たりとしてセルに記入  Cells(r, 1) = cou  Exit For '当たりが出たのでひとつ下のセルでの抽選に移行  End If  Next Next End Sub マクロを走らせた結果: 62,43,110,103,43,110,103,43,110,8,94,47,115・・・ 上記のように同じ数字のカタマリができてしまいます。 もちろん乱数ですので連続したり重複したりするでしょうが、 あまりに同じパターンが繰り返されるのでどこかおかしいのだと思います。 マクロを実行するたびに数字はかわるのですが、やはりカタマリになります。 作成・動作環境はWinXP,Excel2007(ファイル自体は.xlsで作成),Core2Duo2.20GHz,メモリ2GBです。 ほかのExcelのバージョンでも試してみましたが同じような結果です。 当方VBA歴3年ほどですが、わけがわからずに不思議でなりません。 詳しい方、ぜひ解明をお願いします。同じマクロ使っても現象が起きないようでしたら こちらの環境のせいだと思われるので、そういったご指摘でもかまいません。 よろしくお願いいたします。

  • お祭りのくじの当て方(数字合わせとかのめくるやつ)

    以前、お祭りで数字合わせの屋台で、 店やってる人が目の前で当たりくじを2,3枚開いて見せてくれました。 (31番、41番など、下1桁が1のくじがあたりだった場合、それを見分けてくじを引いて見せてくれました) こういうタイプのくじにはやはり見分け方というものがあるのでしょうか? 今ちょうどお祭りやってるので、無理を言うようですがよろしくお願いします。

  • 外部テキストの読み込み

    はじめましてよろしくお願いしますm(_ _)m 最近FLASHのアクションスクリプトを触るようになったのですが、どうしてもわからないことがあるので質問させて下さい。 やりたいのは…、 text01=あいうえお &text02=かきくけこ &text03=さしすせそ という外部テキストファイルがあってそれを1つのswfファイルが読み込まれるごとに違う値を表示したいです。イメージとしては下のような感じです。 <sample.swf>←ここではtext01の内容を表示 ・ ・ <sample.swf>←ここではtext02の内容を表示 ・ ・ <sample.swf>←ここではtext03の内容を表示 ・ ・ swfファイルを個別に用意し、外部テキストの変数をそれぞれ指定してやればできるのですが、それではswfファイルが複数になってしまうのと読み込みにも時間がかかるので(見出しに使いたいのでフォント埋め込みです)なんとか1つのswfファイルでできないか考えています。 FLASHではこういったことは可能でしょうか? 何かヒントだけでもいただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部テキストファイルから数字しか読み込まない現象について

    FLASH MX 初心者です。 外部テキストファイルから文字データを読みこませたいのですが、ムービープレビューでチェックすると 数字以外の文字データが読み込まれていません。FLASHの設定は文字のプロパティで、 テキストの種類:ダイナミックテキスト フォント:_ゴシック(デバイスフォントにしました) 行タイプ:複数行(複数行にわたるため) 変数:txt としています。 テキスト読み込みのアクションスクリプト内1行目には『System.useCodepage = true; 』をいれました。 またテキストファイルは文章の改行部分を『%0D%0A』で区切り、問題なく機能しています。 何が原因でテキストファイルにある数字以外の文字(漢字体・英字体)が表示されないのでしょうか。 環境 OS:WindowsXP(SP2) アプリケーション:FLASHI MX 7.2 よろしくお願いします。

    • ベストアンサー
    • Flash
  • flashのおみくじのような(4桁の数字)ランダムの表示

    一日毎にランダム切り替わる4桁の数字をフラッシュで作成したい と思っています。 http://010101.blog25.fc2.com/?style3=10639&index 上記アドレスのサイトのような雰囲気ですが、リロードで数字が変わらないようにしたいと思っています。(左上部分) 一日毎のHP訪問者のラッキーナンバーみたいな感じです。 そのラッキーナンバーをお店にて言って頂くと割引を提供する ようにしたいと思っています。 (例) 2月28日 1245(固定) 3月1日  4567(固定) ・・・・ といった感じです。 当方のフラッシュはマイクロメディアflashpro 8です。

専門家に質問してみよう