- 締切済み
flashで価格計算表を作成したい
flash初心者です。 以下のような価格を自動計算できる表を作成したいのですが、どなたかわかる方いれば教えてください! http://www.fc-soft.jp/price/kyotaku.html 宜しくお願いします!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
書かれていらっしゃる URL のものは UIコンポーネント を使っていると思います。 おそらく Flash MX の コンポーネント を使っていて, その コンポーネントチェックボックス の絵柄を自分で描き替えているのだと推測できます。 「CheckBox コンポーネント」 とか 「mx.controls.CheckBox」 などと お持ちのヘルプやネットで検索してみると,使い方などが出てくると思いますよ。 ただし,ネット検索の場合は要注意です。 お持ちの Flash のバージョンを書かれていらっしゃいませんが, 基本的にコンポーネントはそのバージョンのものしか使用できませんし, 仕様やスクリプトもバージョンによって異なります。 またActionScriptのバージョンも決まっています。 Flash MX コンポーネント…AS1.0 Flash MX 2004 & Flash 8 コンポーネント…ASt2.0 Flash CS3 Professional コンポーネント…AS3.0 Flash MX 2004 と Flash8 のコンポーネントはほぼ同じ仕様です。 Flash CS3 Professional のコンポーネントは デフォルトでは,ActionScript3.0 用のコンポーネントが出てきますが, 新規ドキュメントを作成するときに ActionScript2.0 を選択すると, Flash MX 2004 と Flash8 などのような ActionScript2.0 コンポーネントが使用できます。 ※UIコンポーネント という名ではありませんが, Flash 4 と 5 でも,既存のチェックボックスはあります。 Flash 4 では「ライブラリ」→「ボタン-高度」に入っています。 Flash をリッチインターネットクライアント(RIA)としての地位を 確立させる構想はすでにこの頃からあったのだと思います。 Flash 5 では スマートクリップ(なんとなくFlash1のずっと先祖 スマートスケッチ を連想させる名だと思う) として存在します。 ただし,それぞれの仕様は全く異なります。 ネットで検索した物が, 作成されているもののバージョンと違っている場合は, 動かないことも当然ありますし,暴走することなどもあり得ます。 ヘルプの場合は,キッチリ読めば大丈夫だと思います。 ==================== しかし, 書かれていらっしゃるような機能のチェックボックスくらいでしたら最初から自作しても簡単です。 チェックボックス自体をムービークリップで自作して, ムービークリップをクリックしたときに, 「無チェック」⇔「チェック」 の絵柄を切り替えるとともに, 金額計算などをさせれば良いだけです。 たとえば, 「無チェック」状態の四角い塗り入りの絵でも描いて, ムービークリップに変換し, そのムービークリップ内を2フレームにして, フレーム2に「チェック」状態の塗り入りの絵を置きます。 つまり, ムービークリップ内のフレーム1…無チェックの絵 ムービークリップ内のフレーム2…チェック状態の絵 ということです。 ドキュメントの編集に戻って, 作成したムービークリップを選択して例えばコピペで 3つ にします。 そしてそれぞれ3つのチェックボックスムービークリップにインスタンス名を付けます。 この説明では例えば 「myCB0」,「myCB1」,「myCB2」 と付けることにしておきます。 そして計算結果表示用のダイナミックテキストを用意して, 例えば 「my_txt0」 というインスタンス名(変数名ではない)を付けます。 そして, メインムービーのフレームに次のように書けば, それなりに動作するチェックボックスムービークリップができます。 ----------------------------------------- // syoukei0(小計0) の初期値を設定 syoukei0 = 0; // 変数 i が 0,1,2 でループ for (i=0; i<=2; i++) { // myCB0~2 を停止 this["myCB"+i].stop(); // myCB0~2 のフラグを false にしておく this["myCB"+0].flag = false; } // --- myCB0 クリック時の動作を定義 --- this.myCB0.onRelease = function() { // もし myCB0 のフラグが true でなければ if (!this.flag) { // myCB0 をフレーム2で停止(チェック状態) this.gotoAndStop(2); // syoukei0 に 3500 を加算 syoukei0 += 3500; } else { // もし myCB0 のフラグが true であれば // myCB0 をフレーム1で停止(無チェック状態) this.gotoAndStop(1); // syoukei0 から 3500 を減算 syoukei0 -= 3500; } // myCB0 の flag の true・false を切り替える this.flag = !this.flag; // テキストフィールド my_txt0 に syoukei0 を表示 my_txt0.text = syoukei0; }; // --- myCB1 クリック時の動作を定義 --- this.myCB1.onRelease = function() { // もし myCB1 のフラグが true でなければ if (!this.flag) { // myCB1 をフレーム2で停止(チェック状態) this.gotoAndStop(2); // syoukei0 に 700 を加算 syoukei0 += 700; } else { // もし myCB1 のフラグが true であれば // myCB1 をフレーム1で停止(無チェック状態) this.gotoAndStop(1); // syoukei0 から 700 を減算 syoukei0 -= 700; } // myCB0 の flag の true・false を切り替える this.flag = !this.flag; // テキストフィールド my_txt0 に syoukei0 を表示 my_txt0.text = syoukei0; }; // --- myCB2 クリック時の動作を定義 --- this.myCB2.onRelease = function() { // もし myCB2 のフラグが true でなければ if (!this.flag) { // myCB1 をフレーム2で停止(チェック状態) this.gotoAndStop(2); // syoukei0 に 2000 を加算 syoukei0 += 2000; } else { // もし myCB2 のフラグが true であれば // myCB1 をフレーム1で停止(無チェック状態) this.gotoAndStop(1); // syoukei0 から 2000 を減算 syoukei0 -= 2000; } // myCB0 の flag の true・false を切り替える this.flag = !this.flag; // テキストフィールド my_txt0 に syoukei0 を表示 my_txt0.text = syoukei0; }; ----------------------------------------- ただし, 上のスクリプトは Flash MX 以上(FlashMX,MX2004,8,CS3)で使用できる, ActionScript1.0 のスクリプトです。 CS3 をご使用の場合はパブリッシュ設定で ActionScript2.0 以下の SWF をパブリッシュさせる設定にしなければ動きません(エラーになります)。 スクリプトは長いですが, 長い分,1つ1つのチェックボックスに対して各々の指示を書いているので, じっくり読めば何が書いてあって,変えたい場合はどこを変えればいいかがわかると思います。 ここまで作るのには Flash や ActionScript の能力や知識が(ほんの少しだけ)必要ですが, ここから先の応用は,Flashの能力や知識とは関係がありません。 こんな感じで着実に考えて行けば良いだけです。