- ベストアンサー
アクションスクリプトで目標値への近づき方を解説
- アクションスクリプトで目標値へ徐々に近づく方法を解説します。
- アクションスクリプトを使用して、目標値に近づく動作を行う方法について詳しく説明します。
- アクションスクリプトのコードを使用して、目標値へのアニメーション効果を実現する方法を解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 下記のアクションスクリプトで徐々に目標値へ近づけたい 「いつ?」・「何を?」 少なくとも, 「いつ」・「何を」 動かしたいのかがわからないと回答できないでしょう。 ましてや,本当の相手は人間ではなく Flash(PC) なんですから 人間を相手にするよりもっと明確でないと動きませんよ。 「いつ」 を勝手に 「btnにロールオーバーしたとき」 だとします。 「何を」 を勝手に 「_root["btn"+1]~_root["btn"+5] を」 だとします。 また _root["btn"+i] 内には, 「thumb」 や 「name_txt」 など何かのインスタンス名付きインスタンスがあるようなので, ボタンインスタンスだとは考えられません。 _root["btn"+i] は ムービークリップ であるものとします。 その場合の勝手なスクリプト例↓ --------------------------------------- // 最大の番号を 5 と仮定する var Max:Number = 5; // 目標の x 座標 を 500 と仮定する var MokuhyouX:Number = 500; // 近付ける割合を 1/10 と仮定する var Speed:Number = 1/10; // btn にロールオーバーしたとき btn.onRollOver = function() { // ループ for (var i:Number = 1; i<=Max; i++) { // ムービークリップ btn1~5 に毎フレーム動作する関数を定義 _root["btn"+i].onEnterFrame = function() { // 目標x座標に向けて Speed の割合ずつ近付ける this._x += (MokuhyouX-this._x)*Speed; }; } // ---以下はそのまま(意味不明なので手を付けず)--- clearInterval(myID); for (var i:Number = 1; i<=Max; i++) { if (this.id != i) { _root["btn"+i].thumb._y = 0; _root["btn"+i].name_txt._y = 20; _root["btn"+i].frame_mc._y = -2; _root["btn"+i].frame_mc.transform.colorTransform = downColor; } else { this.thumb._y = -5; this.name_txt._y = 15; this.frame_mc._y = -6; } } }; --------------------------------------- ActionScript 2.0 Flash MX 2004 以上で使用可能 Flash Player 6 以上で動作可能
補足
回答ありがとうございます! 質問内容が明確でなく、大変申し訳ありませんでした。 下記のスプリクトでbtn_mcにロールオーバーした時と、時間が経つと自動で動く時の上下の動きの部分を徐々に目標値に近づけたい。 IEだとbtnに入れ子にしたMCである、thumbに読み込んでいる一枚目のjpgが表示されません。firefoxだと表示されるのですが。。 何度も申し訳ありませんが、よろしくお願いいたします。 var link_array:Array = ["ダミー", "http://yahoo.co.jp/", "http://yahoo.co.jp/", "http://google.com/", "http://adobe.com/", "http://adobe.com/", "http://adobe.com/", "http://adobe.com/", "http://adobe.com/"];//追記分、リンク先の配列生成、0番目は、使わないので、ダミーとする var Max:Number = link_array.length-1;//読み込むJPGの数 /*var Max:Number = 8;//読み込むJPGの数*/ var num:Number = 1;//現在表示されているjpgの番号、初期値は、1 var downColor = new flash.geom.ColorTransform();//ColorTransform Objの生成 downColor.rgb = 0xffffff;//元位置時の枠の色、適当に決める var upColor = new flash.geom.ColorTransform(); upColor.rgb = 0xff0000;//アップ時の枠の色、これも適当に決める for (var i:Number = 1; i<=Max; i++) { var mc:MovieClip = this.createEmptyMovieClip("mc"+i, Max+1-i);//空のMovieClipをMax枚生成し、深度を其々、mc1→Max、mc2→Max-1、と減算していく //trace(_root["mc"+i]+"の深度は、"+_root["mc"+i].getDepth()); mc._x = 10; mc._y = 50; } //外部JPG読み込み時に、動かす、MovieClipLoaderクラスの設定領域 var mcl:MovieClipLoader = new MovieClipLoader(); var listener:Object = new Object(); listener.onLoadInit = function() {//全ての外部JPGの読み込み終了したなら、_root["mc"+num]に、Tweenを掛けて、1秒で、アルファ値を100から0にする _root.onEnterFrame = function():Void {//_root.onEnterFrameで常時監視し、変数 numの変化に応じて、Tweenの対象MoveClipを変更する var myTween:Tween = new Tween(_root["mc"+num], "_alpha", None.easeInOut, 100, 0, 1, true); }; }; mcl.addListener(listener); for (var i:Number = 1; i<=Max; i++) { mcl.loadClip("img1/"+i+".jpg",_root["mc"+i]);//外部JPGを、Max枚全て先に、読み込む /*getBytesTotal()>0 */ } //Max値に合わせて、自動的に、ボタンを追加する領域 var bmcl:MovieClipLoader = new MovieClipLoader(); for (var i:Number = 1; i<=Max; i++) { /* bmcl.loadClip("img2/"+i+".jpg",_root["btn.thumb"+i]);*/ var btn:MovieClip = _root.attachMovie("btn_mc", "btn"+i, Max+i);//ライブラリー内の識別子 btn_mc をattachする、深度はMax+iから始まるので、_root["mc"+i]の上に来る btn.id = i;// i をbtn.idに保存 bmcl.loadClip("img2/"+i+".jpg",btn.thumb);//btnに入れ子にしたMCである、thumbに、読み込む /* getBytesTotal()>0 */ btn._x = (30-50)+50*i; btn._y = 260; btn.frame_mc.transform.colorTransform = downColor;//ロード時は、downColor btn.name_txt.text = i+".jpg";