• 締切済み

Flash ドラッグ&ドロップで買い物かごの合計を出したいのです。

Flashをそんなに使いこなせないほどのレベルの者です。 今回知人から小さい子向けの買い物かごシミュレーション的なものを依頼されました。 どんなものかといいますと、画面上には買い物カゴと商品棚があって、棚にはバナナやリンゴ等の果実(商品)が並んでいます。 商品棚から買い物カゴへ好きな果実を数個ドラッグ&ドロップします。 最後に「レジ」のボタンを押すと別ページに飛んで、買い物カゴの中身の合計金額が表示されるようなものです。 ただ計算機と違って、ドラッグ&ドロップ要素をプラスされていて なおかつ買い物カゴの中身だけを合計するといった内容に四苦八苦しております。 どなたかアドバイスや参考になるURLをお教えいただけないでしょうか。 依頼自体金銭が絡むような仕事ではないので、できればFLASHのサンプルをいじるだけでサクーっと作れればいいかなとも思っております。 (このような内容のFLASHサンプルをUPしている所を知っているならばお教え頂きたい) それでは宜しくお願い致します。

  • Flash
  • 回答数1
  • ありがとう数2

みんなの回答

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

お持ちのFlashのバージョンもActionScriptのバージョンも書かれていらっしゃらないため, 少々回答がしにくいですね。 Flash MX 以上(Flash MX,MX2004系,8系,CS3,CS4)をお持ちだと勝手に決めて以下を回答します。 ActionScript のバージョンは 1.0 です。 ステージ上に 「ringo_mc」,「banana_mc」,「budou_mc」というインスタンス名を付けたドラッグ用ムービークリップと 「kago_mc」というインスタンス名を付けたカゴ用ムービークリップと 「goukei_btn」というインスタンス名を付けた合計表示動作用ボタンと 「goutei_txt」というインスタンス名を付けた合計表示用ダイナミックテキストを用意します。 (各インスタンスに関しては下の図↓をご参考に。) そして, それらを配置した _root などのタイムラインの フレーム(キーフレーム)に 次のように書けば 一応それなりに近い物ができると思います。 ================================================= // 変数「goukei(合計)」の初期化 goukei = 0; // // ---リンゴムービークリップに関して--------- // リンゴムービークリップにドロップフラグである変数を設定 ringo_mc.drop_flg = false; // リンゴムービークリップを押した時の動作定義 // ringo_mc.onPress = function() { // リンゴムービークリップをドラッグ開始 this.startDrag(); }; // // リンゴムービークリップを放した時の動作定義 ringo_mc.onRelease = ringo_mc.onReleaseOutside=function () { this.stopDrag(); // もしカゴムービークリップに当たっていてdrop_flgがfalseであれば if (this.hitTest(kago_mc) && !this.drop_flg) { // 合計に100を加算 goukei += 100; // drop_flg を true にする this.drop_flg = true; // もしカゴムービークリップに当たっていなくてdrop_flgがtrueであれば } else if (!this.hitTest(kago_mc) && this.drop_flg) { // 合計から100を減算 goukei -= 100; // drop_flg を false にする this.drop_flg = false; } }; // // ---バナナムービークリップに関して--------- banana_mc.drop_flg = false; // banana_mc.onPress = function() { this.startDrag(); }; // banana_mc.onRelease = banana_mc.onReleaseOutside=function () { this.stopDrag(); if (this.hitTest(kago_mc) && !this.drop_flg) { // 合計に200を加算 goukei += 200; this.drop_flg = true; } else if (!this.hitTest(kago_mc) && this.drop_flg) { // 合計から200を減算 goukei -= 200; this.drop_flg = false; } }; // // ---ブドウムービークリップに関して--------- budou_mc.drop_flg = false; // budou_mc.onPress = function() { this.startDrag(); }; // budou_mc.onRelease = budou_mc.onReleaseOutside=function () { this.stopDrag(); if (this.hitTest(kago_mc) && !this.drop_flg) { // 合計に300を加算 goukei += 300; this.drop_flg = true; } else if (!this.hitTest(kago_mc) && this.drop_flg) { // 合計から300を減算 goukei -= 300; this.drop_flg = false; } }; // // ---合計ボタンに関して--------- // 合計ボタンをクリックした時の動作定義 goukei_btn.onRelease = function() { // 「goutei_txt」に合計を表示 goukei_txt.text = goukei; }; ================================================= 本当は「金額データ用配列」などを別に用意して, インスタンス名なども機械的に整列させた名前を付ければ, プログラム的にはもっともっとスマートになります。 しかしそういうテクニックを使うと, 色々な概念や関数の使い方などにも話が及んで本体が見えにくくなると思いましたので, 1つ1つのムービークリップに対して着実に1つ1つの動作と金額を設定するようなスクリプトにしました。 スクリプトは長いですが, これだと,ミカンが増えた時はどうすれば良いか とか ブドウをイチゴに変えたい場合はどうすれば良いのかなどが分かりやすいと思います。 Flashゲーム講座&ASサンプル集【当たり判定について】 http://hakuhin.hp.infoseek.co.jp/main/as/hittest.html  

fukui02
質問者

お礼

BlurFiltanさん 解り易い回答ありがとうございます。画像も付けて頂いてありがたいです。 早速このFLASHにチャレンジしてみますので、報告までしばらくお待ち下さい。 参考URLも見て勉強します。

関連するQ&A

  • jQueryのドラッグ&ドロップとDB連携

    どうにも行き詰ってしまったので、教えてください。 jQueryを使って、元リストに並んでいるものを、Aグループ、Bグループにそれぞれドラッグして、並び替えた内容をDBに保存しようとしています。 ドラッグ&ドロップについては、サンプルも豊富にありますが、それをDBに保存するようなサンプルが見つかりません。 動作説明も含めて参考になりそうなサイトはないでしょうか。

  • VC++でドラッグドロップ

    いつもお世話になっております。 今回はドラッグ&ドロップについてお聞きしたいです。 リストボックスにフォルダをドラッグしてそのフォルダの中身を リストに表示するというものを作りたく、ネットでいろいろ調べた所 以下のように作りました。 ResourceViewでドロップドラッグを許可にチェックを入れる case WM_CREATE:   DragAcceptFiles(::GetDlgItem(hWnd, IDC_LIST1), TRUE);   return TRUE; case WM_DROPFILES:   { // ドロップされた内容を取得   hdrop = (HDROP)wParam;   DWORD dwSize;   CHAR szPath[MAX_PATH+1];   ZeroMemory(szPath, sizeof(szPath));   int num = ::DragQueryFile(hdrop, -1, NULL, 0);   for (int i = 0; i < num; i++);{     dwSize = ::DragQueryFile(hdrop , i, szPath, MAX_PATH+1);     if (dwSize <= 0) //取得失敗     {       return FALSE;     }     else{ //以下にszPathから中身を表示させる処理 ・・・} 以上のようにするとドラッグしたファイルの数は 正しく取得しているのですがファイル名を得る関数部分で 1.i=0としているのに、最初からi=numの数になってしまう 2.二つ目のDragQueryFileのiを1にしても戻値(ファイル名のサイズ)は 0となって取得していない となってしまいます。 なぜこのようになってしまうのか、ご教授願います。 環境はVisual C++6.0 OSは windowsXP SP2です

  • ゴミ箱のようなflashを作りたい

    actionscript初心者です(1.0か2.0) flashは CS4 を使ってます ステージにいくつかのオブジェクトと、3つの箱がある ↓ 任意のオブジェクトを1つドラッグして、任意の箱にドロップ ↓ 箱がふくらむ ※1つの箱に入るオブジェクトは1つまで といった感じのflashを作りたいのです オブジェクトのドラッグはなんとか書けますが、 箱の上でオブジェクトが消え、箱がふくらんだ箱に変わるところなどがわかりません・・・ いいサンプルなどご存知でしたら教えてください!

    • ベストアンサー
    • Flash
  • フォームに買い物かご?を付け足したい

    PHPで簡易なショッピングカートを設置したいと思っています。 (カートと呼べるほどのものでなくてよいのですが) 購入側の流れとして・・・ (1)商品一覧ページから各商品詳細ページへ移動、個数を選択し、買い物かごへ (2)カート内容確認ページにて商品名・個数と合計金額の表示、個数の変更・削除 (3)買い物を続ける(商品ページへ戻る)or(4)購入者情報を入力(これらは同ページ内でも別ページでも可) (5)入力情報の確認or(6)情報不足でエラー表示((4)にもどる) (7)送信 という感じにしたいのですが、決済などは考えず単にメールで内容を受け取れたら十分なので 単純なフォームでよいかと思ったのですが、個数と商品名をカートに入れていく部分をどうしたらいいのか分かりません。 jCartというフリーのカートシステムで、商品の一斉表示になっているのを商品1つずつに変えて、Paypal決済部分をメール送信に置き換えたような感じかなぁと思っているのですが・・・・ 自分でも本を探したりいい情報がないか検索していますが、並行してこちらでも質問させていただきます。 どなたか御指南いただけるとうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Ajax Updaterでドラッグアンドドロップ

    正確にはタイトルがおかしいのですが… 現在、商品をドラッグアンドドロップで買い物かごに入れ、 入れられた商品はカート上に表示されるというプログラムをPHP+Ajaxで組んでいます。しかし、ドラッグアンドドロップの機能を実装するところまではいいのですが、それを買い物かごに入れるという動作がうまくいきません。 以下にソースコードを掲載します。 <script type="text/javascript">Droppables.add('lwi_navi_2', {accept:'items',onDrop:function(element){new Ajax.Updater("cart20to40", "index.php", {"method": "get", "parameters": "action=cartAdd& id= ' + encodeURIComponent(element.id) + ' },hoverclass:'nowHover'})</script> index.phpは現在表示しているページです。(カレントファイル) ParamatersのactionのcartAddで読みだされるのは /*カートにドロップされたとき*/ function cartAdd(){ //関数内で使用する配列名を決定 $ArrayName = "cart" + 20 + "to" + 40; //送られてきたドロップエレメンツの名前を区切り文字で配列に収納 $itemName = explode('_',$POST['id']); //配列itemNoの数字部分をint型に変換し収納 $itemId = (int)$itemName(1); //ArrayNameで定義された配列の商品IDと一致する行に1を足す $_SESSION[$ArrayName][$itemId] ++; //この配列を元にカート作成関数を実行 makeCartItem($startAge,$endAge); var_dump($cart20to40); return; } これを実行しても、ページには何の変化もありませんでした。 何か手掛かり及び根本的な考え方の間違えがあれば教えてください。

  • Adobe flashソフトを使ってゲームを作りた

    Adobe flashソフトを使ってゲームを作りたいのですが アクションスクリプト(プログラム)がわかりません 内容はドラックアンドドロップです シンボルを1つ作ります。 シンボル名は[block1]にします。 それを画面左に設置します。 そのシンボル[block1]にカーソルを合わせドラッグandドロップして画面右に何個も移動させるプログラミングを教えてください

  • フローティングウィンドウを使いたいのですが・・・

    現在ショッピングカートをPHP+mySqlで作っています。 商品の個数を選択し、カゴに入れるボタンを押したらページの明度を下げて中央にカゴに入れた商品の名前、金額、個数が記述されたウィンドウを出したいと考えております。 また、それらの情報の下に 『このまま買物を続ける』ボタン  (処理)ポップアップを閉じる 『カゴの中身を見る』ボタン  (処理)購入商品一覧ページに遷移 という処理が入ります。 http://www.c61.org/wd/080131/sample_02.html FLASHなので少々違いますが、上記URLの『フローティングを実行する』リンクを押したような画面の出方にしたいと思ってます。 これらを実現できるようなライブラリや解説がわかるようなサイトなどありましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • AJAX
  • 買い物カゴの記述

    教えて下さい。買い物籠のカートを無料のcgiを使って作成しているのですが、1つの商品に対して1ページで作るとokなんですが、その商品には2種類の価格があり、AとBのコードも2つ有ります。どうしても1頁に1個コードで作られているみたいなのですが、1頁で2種類を選択する事で価格を変えたいのですが、cgiの中身を見ても難しくて判りません。可能なのかどうかも判りません。(^^;;;HTMLのページの頭のコードで判断されているのは解るのですが、それが1対1の条件になっている感じです。どうすればよいのか判りません。(-_-;)500個の 商品があれば250頁で済むのが500頁作らないと駄目になります。どなたか適切なアドバイスをお願いします。(・_・)(._.)

    • 締切済み
    • CGI
  • フラッシュメモリ→ゴミ箱 で、データはPC内に残っている?

    フラッシュメモリからドラッグ&ドロップでゴミ箱に移して、「ゴミ箱を空にする」で削除したデータは、パソコン内に残っているんでしょうか? いったんハードディスクにコピーされた内容は、削除したように見えても実は残っていて復元できるというのを聞いたことがあるので… この場合も、ゴミ箱に入れて空にしたつもりでも、データを見ることができるんでしょうか? 詳しい方いらっしゃいましたらよろしくお願いします。

  • 自作フラッシュが見れません。

    IE6を使っています。 インターネット上にあるフラッシュは問題なく見れるのですが、parafla!で作った自作フラッシュが見られません。 .swfで保存してIEにドラッグ&ドロップすると、 Runtime Error! Program:C:\WINDOWS\system\sevricess.exe This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. と表示されて『OK』を押すとブラウザごと閉じてしまいます。 右クリック→アプリケーションから開くでもダメでした。 プログラムに原因があるのかと思って配布サイトのサンプルを開こうとしましたが、同じ結果でした。 どうしたら見れるようになりますか?よろしくおねがいします

専門家に質問してみよう