質問: 100; } onclipevent (enterframe) { if (_parent.mover) { this._alpha -= this._alpha/8; } else { this._alpha += (100-this._alpha)/8; } } 現状ですとアルファ値は100% ⇔ 0%で変更されるのですが これを100% ⇔ 50%の範囲で変更できればと考えてます。 条件式がtrueなら100%→50%へ、falseなら50%→100%へ。 また、どちらの処理にも最後に「/8」と記されていますが これはどう言った意味をもつのでしょうか? どなたかご存知でしたら、ご教授いただけると幸いです。 よろしくお願いします。
回答: まず元のスクリプトの意味を1行ずつ書いておきます。 /////////////////////////////////////////////////////////// // このムービークリップがロード(表示)されたとき onclipevent (load) { // このムービークリップの不透明度を 100 にする this._alpha = 100; } // 1フレーム進む時間ことに毎回実行 onclipevent (enterframe) { // もし親階層の変数 mover の値が true であれば if (_parent.mover) { // このムービークリップの不透明度を8分の1ずつ引く this._alpha -= this._alpha/8; // もし親階層の変数 mover の値が false であれば } else { // このムービークリップの不透明度を100に向けて8分の1ずつ近付ける this._alpha += (100-this._alpha)/8; } } /////////////////////////////////////////////////////////// > これを100% ⇔ 50%の範囲で変更できればと考えてます。 「親階層の変数 mover」 がどのようにして出没して,どのように変えられるのかがわかりません。 つまり, そのスクリプト以外の部分を見ないと, なぜこのような変なもの(親階層の変数 mover)が出没するのかという意味がわからないということです。 しかし, 現状でうまく動いているのであれば, 上のスクリプトの // このムービークリップの不透明度を8分の1ずつ引く this._alpha -= this._alpha/8; この↑部分を,次の↓ように変えれば良いと思います。 // このムービークリップの不透明度を50に向けて8分の1ずつ近付ける this._alpha += (50-this._alpha)/8; 変える部分はこれだけです。 ====================== > また、どちらの処理にも最後に「/8」と記されていますが > これはどう言った意味をもつのでしょうか? 「+=」が唯一actionscriptと呼べるかもしれませんが, それ以外は actionscript というより算数ですよ。 「+=」 は加算後代入演算子と言います。 値に数値を持つ a という変数があったとします。 a += 10; と書いたとするならば, これは, a = a + 10; と同じ意味になります。 もし a に 50 という値を代入したとします。 その a にさらに 10 を加算するという式は次のようになります。 a = 50; ←a に 50 を代入 a += 10; ←a = a + 10 つまり a = 50 + 10 これで,変数 a には 50 + 10 で 60 が代入されます。 後は算数です。 // このムービークリップの不透明度を100に向けて8分の1ずつ近付ける this._alpha += (100-this._alpha)/8; これは, this._alpha = this._alpha + (100-this._alpha)/8; と同じ意味です。 this._alpha (ムービークリップの不透明度) が 0 (透明)であったとします。 this._alpha = 0 + (100 - 0)/8; ↓ this._alpha = 12.5; でムービークリップの不透明度は 12.5 になります。 onclipevent (enterframe) { } で1フレーム進む時間ことに毎回実行されるわけですから, 次の瞬間は this._alpha (ムービークリップの不透明度) が 12.5 に加算されます。 this._alpha = 12.5 + (100 - 12.5)/8; ↓ this._alpha = 23.4375; 次の瞬間は this._alpha (ムービークリップの不透明度) が 23.4375 に加算されます。 this._alpha = 23.4375 + (100 - 23.4375)/8; ↓ this._alpha = 33.0078125; という感じで徐々に 100 に近づいて行きます(100には決してなりません)。 もし excel をお持ちでしたら, 「a1」セルに 「0」 を入力して, 「a2」セルに 「=a1+(100-a1)/8」 を入力して, 「a2」セルの右下のハンドルを下にダラーッとドラッグしてもらうと(オートフィル機能をつかうと), すぐに結果が見えると思います。 このような数が得られます↓。 0 12.5 23.4375 33.0078125 41.38183594 48.70910645 55.12046814 60.73040962 65.63910842 69.93421987 73.69244238 76.98088709 79.8582762 82.37599167 84.57899272 86.50661863 88.1932913 89.66912989 90.96048865 92.09042757 93.07912412 93.94423361 94.70120441 95.36355386 95.94310962 96.45022092 96.89394331 97.28220039 97.62192534 97.91918468 98.17928659 ...以下略... このような感じで, 今現在の状態から 8分の1 ずつ,アルファ(不透明度)が 100 に近づいて行くということです。 excel では途中で誤差が丸められて, 170行目を超したあたりで 100 になってしまいますが,実際には 100 にはなりません。 ひたすら 100 に漸近します。 (※ 漸近線という言葉は高校数学で習いますが計算自体は小学算数です。) もっと早く 100 に近付けたい場合は, /8 を /7 とか /6 にすれば早く 100 に近づきます。 もっと遅く 100 に近付けたい場合は, /8 を /9 とか /10 にすれば遅く 100 に近づきます。