移動位置が狂ってしまう

このQ&Aのポイント
  • ボタンの有効と無効を合体させてアクションスクリプトを記述したが、2つのボタンを押すと移動位置が狂う
  • 行数が増え、どのように対処すればいいのか分からないので教えてほしい
  • クラスのインポートや画像の設定などを紹介している
回答を見る
  • ベストアンサー

移動位置が狂ってしまう

いつもお世話になります。 「ボタンの有効と無効」及び「左右ボタンで方向切替」を合体させてアクションスクリプトを記述しました。ボタンが1個の時に、falseとtrueで有効・無効を教えていただきました。 次にボタンを2個とした場合、右ボタンを押し、即座に左ボタンを押すとやはり移動位置が狂ってしまいます。私にとっては行数が増え、どのように対処すればいいのかわかりません。 教えてください。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //カウンタ用変数 var cnt:Number = 0; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば (cnt<g_n-1) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-g_w, 3, true); //bt1のボタン機能を無効にする R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする R_btn.enabled = true; } //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //R_btnを非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } } //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x+g_w, 3, true); //bt1のボタン機能を無効にする L_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする L_btn.enabled = true; } //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //L_btnを非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } };

noname#142022
noname#142022
  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

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

移動位置が狂うのは「R_btn」や「L_btn」クリックで お互いのボタン機能を操作していないからでしょう。 書かれているスクリプトでは 「R_btn」をクリックしても「L_btn」をクリックしても "クリックしたボタンのみ" の機能を無効にしています。 そうではなくて 「R_btn」をクリックしても「L_btn」をクリックしても どちらにしてもTweenが終わるまで "両方" のボタン機能を無効にしておく必要があります。 書かれているスクリプトを そのまま延長した場合のスクリプト例です↓。 (「★」を付けた部分が変更点) //------------------------------ //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //カウンタ用変数 var cnt:Number = 0; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば if (cnt<g_n-1) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-g_w, 3, true); //★L_btn & R_btn のボタン機能を無効にする L_btn.enabled = false; R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //★L_btn & R_btn のボタン機能を有効にする L_btn.enabled = true; R_btn.enabled = true; }; //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //R_btnを非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } }; //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x+g_w, 3, true); //★L_btn & R_btn のボタン機能を無効にする L_btn.enabled = false; R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //★L_btn & R_btn のボタン機能を有効にする L_btn.enabled = true; R_btn.enabled = true; }; //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //L_btnを非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } }; //------------------------------ 一応は以上です。 ===================== しかし... 私はせっかちですから 閲覧者の立場で上のスクリプトを動作させると非常にイライラします。 私でしたらボタン機能は無効にせずに次のようにします。 (本題とは関係のない ★オマケ 機能も勝手に入れてます) //------------------------------ //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //表示する文字列の設定(★オマケ) var str_arr:Array = ["画像1", "画像2", "画像3", "画像4", "画像5", "画像6", "画像7"]; //文字列を表示するテキストフィールドを作成(★オマケ) //(本当は好きな場所に手動で「my_txt」を作成する) createTextField("my_txt", 0, 10, 10, 0, 0); my_txt.autoSize = "left"; my_txt.border = true; my_txt.background = true; //カウンタ用変数 var cnt:Number = 0; //「my_txt」に文字列を表示(★オマケ) my_txt.text = str_arr[cnt]; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数 未満であれば if (cnt<g_n) { //カウンタに1を加算 cnt++; //-g_w*cnt に向けて x座標 をTween var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, -g_w*cnt, 3, true); //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-1になれば if (cnt == g_n-1) { //R_btnを非表示にする R_btn._visible = false; } //「my_txt」に文字列を表示(★オマケ) my_txt.text = str_arr[cnt]; } }; //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { //カウンタから1を減算 cnt--; //-g_w*cnt に向けて x座標 をTween var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, -g_w*cnt, 3, true); //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 0 になれば if (cnt == 0) { //L_btnを非表示にする L_btn._visible = false; } //「my_txt」に文字列を表示(★オマケ) my_txt.text = str_arr[cnt]; } }; //------------------------------ とりあえずは関係のない「(★オマケ)」部分の動作は無視してください。 動く先の座標を 動いている最中かもしれない(不安定な)「my_mc」を基準にして決定するのではなく, しっかりと安定した数「-g_w*cnt」で決定するようにしています。 こうすれば見たい画像までイライラせずにスムーズに my_mc を移動させることができます。 ※以上のスクリプト   ActionScript 2.0 / Flash Player 6 以上で動作 ※後にこのページを見る方がいらした場合の状況説明図↓

noname#142022
質問者

お礼

とてもFLASHらしい心地いい動きにしていただきましてありがとうございます。 それにオマケも!

関連するQ&A

  • Tweenを使って元の位置に戻したい

    はじめまして。 制作環境 flashCS3 アクションスクリプト2.0 Tweenクラスを使ってアニメーションを楽しんでいます。 座標100、200に円(直径75のボタン)を配置し、クリックすると座標300、200に拡大移動できます。 ここまでは動作するのですが、再度クリックして元の位置に戻す方法がわかりません。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; grobal_btn.onRelease = function() { mc_tween = new Tween(grobal_btn, "_xscale", Elastic.easeOut,grobal_btn._xscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_x", Elastic.easeOut,grobal_btn._x,300, 4, true);//スタートx座標、移動した後の座標 mc_tween = new Tween(grobal_btn, "_yscale", Elastic.easeOut,grobal_btn._yscale, 150, 1, true); mc_tween = new Tween(grobal_btn, "_y", Elastic.easeOut,grobal_btn._y,100 , 4, true);//スタートy座標、移動した後の座標 }

    • ベストアンサー
    • Flash
  • for文を使ったボタン

    for文を使ったボタン ボタンが2つあり、そのボタンをロールオーバー、ロールアウトでそれぞれ違うmcを動かしたいのですが、うまくいきません。ボタンを「maru1、maru2」として動かしたいmcを「btn1、btn2」とインスタンス名をつけて以下のスクリプトを書きました。 maru1.addEventListener(MouseEvent.ROLL_OVER,onMouse1); maru1.addEventListener(MouseEvent.ROLL_OUT,outMouse1); maru1.buttonMode = true; maru2.addEventListener(MouseEvent.ROLL_OVER,onMouse2); maru2.addEventListener(MouseEvent.ROLL_OUT,outMouse2); maru2.buttonMode = true; function onMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } function onMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } これでも動くのですが、ボタンが沢山あった場合にfor文を使ってできないかと考え、ttp://www.oro.co.jp/web/creator/flash/actionscript/soft-button.htmlを参考に var mc_tween:Tween; //イベント登録 for(var i:int = 1; i < 3; i++){ this["maru"+i].addEventListener(MouseEvent.ROLL_OVER, rollOverEvent); this["maru"+i].addEventListener(MouseEvent.ROLL_OUT, rollOutEvent); this["maru"+i].buttonMode = true; } function rollOverEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1.5, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1.5, 1, true); addChildAt(btn, 5); } function rollOutEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1, 1, true); } と書いたのですが、上手く行きません。<var btn:MovieClip = event.target as MovieClip;>の部分でどのように「btn1、btn2」を参照したらいいのでしょうか。 作業環境はmacOSX flashCS5 actionscript3です。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ボタンの有効と無効

    FLASH CS3 AS2.0で作っています。始めたばかりの初心者です。 スライドショーを作りました。画像6枚をつなげてインスタンス名をmy_mcとしました。 ボタンを1つ置きインスタンス名をbt1としました。 import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-200, 3, true); }; これで動作はするのですが、Tweenを3秒間で行います。3秒のうち、2秒でボタンを押すと 移動が狂ってしまい、うまくいきません。 押された時の、my_mc._xが200区切りでなくなるためと思います。 ボタンを3秒間というか1画面がスライドするのを完了した時点で、ボタンが押せるように したいのです。どんな方法がありますか、教えてください。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • getTaimerがうまく動作してくれません

    いつも、ありがとうございます。FlashMXです。 衝突の後の少しの時間ボタンの使用を無効にしたいので以下のようなスクリプトをムービークリップに入れましたが、無効になった後に戻りません。 getTimerが効いていないのでしょうか?困っています。 onClipEvent (enterFrame) { if (_parent._parent.shin.hitTest(this)) { _parent._parent.shin.gotoAndStop("hit"); start = getTimer(); timer = 0.05*1000; if (getTimer()>start+timer) { _parent._parent.btn_l._visible = true; _parent._parent.btn_u._visible = true; _parent._parent.btn_r._visible = true; } else { _parent._parent.btn_l._visible = false; _parent._parent.btn_u._visible = false; _parent._parent.btn_r._visible = false; } } }

    • ベストアンサー
    • Flash
  • ActionScript3:Tweenをfor文で割り当てられないのか

    ActionScript3:Tweenをfor文で割り当てられないのか? AS3でaddChildでMovieClipを複数置いてTweenをfor文で割り当てるということをやろうとしているのですが、どうしても順番で最後のMovieClipしか動きません。 以下のようにコーディングしてボタンを5個を並べてマウスオーバーするとTweenアニメで動き、またアウトするとTweenアニメで元の位置に戻るというものを作りたいのですが、5番目のボタンしか動きません。Tweenはfor文で割り当てられないのでしょうか? //クラスのインポート import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.*; //ボタン配置 for (var i:uint=1; i<6; i++) { var BtnName:String="btn0"+i; var BtnNumber:Class=getDefinitionByName(BtnName) as Class; var Btn:MovieClip = new BtnNumber(); addChild(Btn); Btn.x=10+Btn.width/2+(Btn.width+10)*(i-1); Btn.y=46+Btn.height/2; Btn.buttonMode=true; Btn.id=i; ←idというプロパティを付けてもダメでした Btn.addEventListener(MouseEvent.ROLL_OVER, RollOverEv); Btn.addEventListener(MouseEvent.ROLL_OUT, RollOutEv); function RollOverEv(eventObject:MouseEvent):void { BtnTween01=new Tween(Btn,"y",None.easeNone,Bottom,Top,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 if (BtnTween02.isPlaying) { BtnTween01=new Tween(Btn,"y",None.easeNone,BtnTween02.position,Top,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 } } function RollOutEv(eventObject:MouseEvent):void { BtnTween02=new Tween(Btn,"y",None.easeNone,Top,Bottom,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 if (BtnTween01.isPlaying) { BtnTween02=new Tween(Btn,"y",None.easeNone,BtnTween01.position,Bottom,MovSpd,true); ↑このBtnがi=5としか認識してないようです。 } } } //変数色々設定 var BtnTween01:Tween; var BtnTween02:Tween; var Top:uint=Btn.height/2+5; var Bottom:uint=Btn.height/2+46; var MovSpd:Number=0.2; ■環境:ActionScript3、Flashサイズ:w;280xh:100

    • ベストアンサー
    • Flash
  • 代入しない文字の連結方法

    WinXP,Flash8pro,AS2,FP8の環境でオーサリングしています。 質問です。 下記でiを連結する場合、エラーとなってしまいます。 PHPでは.で結合しますが、AS2の場合、どう記載したらよいのでしょうか? []は必要ないようですが。 どうぞ宜しくお願い致します。 cnt=20; for(i=1;i<cnt;i++){ _root.main_mc.photo_player_loading_mc.selected_bar+[i]_mc._visible=true; _root.main_mc.photo_player_loading_mc.buy+[i]_btn._visible=true; _root.main_mc.photo_player_loading_mc.dl+[i]_btn._visible=true; }

    • ベストアンサー
    • Flash
  • actionscript3.0について教えてください。

    actionscript3.0について教えてください。 Flash CS4で、マウスオーバーすると画像が表示するものを制作しました。 (全レイヤー、1フレーム目のみで制作していました) そして最近その以前制作したものの直前に別のムービーを入れることになり、 画像のように1フレーム目から4フレーム目まであけました。 そしてもともとあったフレームをすべて5フレーム目に移動しました。 すると、エラーが出るようになりました。 5フレーム目に移動するとエラーが出るようになってしまったので、 試しに2フレーム目、3フレーム目など試しましたが同じくエラーが出ました。 エラーの内容は TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at test_fla::MainTimeline/frame5() です。 下記のスクリプトを上から二つ目のレイヤーに記述しています。 一番上のレイヤーには、stop();と記述しています。 超初心者のため説明不十分かもしれませんが、宜しくお願いいたします。 /*ボタン1 */ nav1txt_mc.visible = false; nav1_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover); function onMouseover(e:MouseEvent):void{ nav1txt_mc.visible = true; nav1txt_mc.gotoAndPlay("nav1txt_mc"); } nav1_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay); function nondisplay(e:MouseEvent):void{ nav1txt_mc.visible = false; } /*ボタン2*/ nav2txt_mc.visible = false; nav2_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover2); function onMouseover2(e:MouseEvent):void{ nav2txt_mc.visible = true; nav2txt_mc.gotoAndPlay("nav2txt_mc"); } nav2_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay2); function nondisplay2(e:MouseEvent):void{ nav2txt_mc.visible = false; } /*ボタン3*/ nav3txt_mc.visible = false; nav3_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover3); function onMouseover3(e:MouseEvent):void{ nav3txt_mc.visible = true; nav3txt_mc.gotoAndPlay("nav3txt_mc"); } nav3_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay3); function nondisplay3(e:MouseEvent):void{ nav3txt_mc.visible = false; } /*ボタン4*/ nav4txt_mc.visible = false; nav4_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover4); function onMouseover4(e:MouseEvent):void{ nav4txt_mc.visible = true; nav4txt_mc.gotoAndPlay("nav4txt_mc"); } nav4_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay4); function nondisplay4(e:MouseEvent):void{ nav4txt_mc.visible = false; } 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • マウス位置によって画像を切り替える

    ステージ上のマウス位置を読み取り、その座標によって画像を切り替えるFlashを作成中なのですが、上手くいきません。 流れとしては 画像のファイルを読み込む ↓ 画像のファイル分だけムービークリップを作成 ↓ マウスの座標に応じて画像(ムービークリップを切り替える) というものです。 下記のようにかいています。 ●1フレーム目 //各画像の変数読み込み jpg1 = "test1.jpg"; jpg2 = "test2.jpg"; jpg3 = "test3.jpg"; jpg4 = "test4.jpg"; //初期配置 //空のMCを作成し、その中に画像変数を読み込ませる。 _root.createEmptyMovieClip("image_mc0",4); _root.createEmptyMovieClip("image_mc1",3); _root.createEmptyMovieClip("image_mc2",2); _root.createEmptyMovieClip("image_mc3",1); _root.image_mc0.loadMovie(_root.jpg1); _root.image_mc1.loadMovie(_root.jpg2); _root.image_mc2.loadMovie(_root.jpg3); _root.image_mc3.loadMovie(_root.jpg4); //マウスが押されたときに変数MCclickをオンにする _root.mouse_mc.onPress = function() { MCclick = true; trace( "押された時の変数 " +_root.MCclick); } //マウスが離れた時に変数MCclickをオフにする _root.mouse_mc.onRelease = function() { MCclick = false; trace( "離れた時の変数 " +_root.MCclick); nowpoint = (_root._xmouse); trace( "今の位置" + nowpoint); } //マウスがボタン領域外にいった時に変数MCclickをオフにする _root.mouse_mc.dragOut = function() { MCclick = false; trace( "どっかいった時の変数 " +_root.MCclick); } stop(); ●ステージ上にかぶせている透明なMC(mouse_mc) //MCclickがオンの時変数mc_xの値をとり続ける onClipEvent (mouseMove) { if (_root.MCclick) { _root.mc_x = (_root._xmouse); trace( "押された時の変数mc_xの位置 " + _root.mc_x); trace( "マウスを押したままの変数 " + _root.MCclick); //100以下の時に画像1を表示 if((_root.mc_x >= 0) || (_root.mc_x <= 100)){ _root.image_mc0._visible = true; _root.image_mc1._visible = false; _root.image_mc2._visible = false; } else if((_root.mc_x >= 100) || (_root.mc_x <= 200)){ _root.image_mc0._visible = false; _root.image_mc1._visible = true; _root.image_mc2._visible = false; } else if((_root.mc_x >= 200) || (_root.mc_x <= 300)){ _root.image_mc0._visible = false; _root.image_mc1._visible = false; _root.image_mc2._visible = true; } } } この書き方で一応動作はするのですが、1枚目と2枚目の画像の切り返しか動作が行われなくて困っています。 画像のサイズ、ステージのサイズは両方とも 400*400です。

    • ベストアンサー
    • Flash
  • 「ボタンロールオーバー時のインスタンス同士の重なり」による動作について

    「ボタンロールオーバー時のインスタンス同士の重なり」による動作について flashcs4、as3で制作をしています。 配置してあるボタンインスタンスにマウスオーバーしたときに、 ボタンの上に吹き出しが表示されるというものをつくろうとしています。 現在記述しているスクリプトは まず、stageにhukidasiをaddChildして表示リストに追加。visibleをfalseにしておく。 btn1にマウスがロールオーバーしたときにhukidasiのvisibleをtrueにして表示。ロールアウトしたときはvisibleをfalseにして非表示にする。 というものです。 こちらの反応はいちおう実現できたのですが、ロールオーバー時にボタン(btn1)と吹き出し(hukidasi)が重なっている部分にマウスをもっていくと、吹き出しが点滅して消えたり表示されたりを繰り返してしまうのです。 サンプル http://homepage2.nifty.com/meary/testtest.html それを解消させるために、吹き出し(hukidasi)はボタン(btn1)の子としてaddChildして、 btn1.mouseChildren=falseとして吹き出しにボタンの機能を持たせないようにしてみると前述のような反応はなくなりました。 ですが、このように吹き出しをボタンの子とすると、ボタンの領域に吹き出しの大きさも追加されてしまいまして、そのようなことは望んでいないのです。 ボタンの領域をマウスが外れたら吹き出しが消える、というようにしたいのです。 このようなことを実現するにはどういったスクリプトが必要でしょうか。 ご教授お願いいたします。 現在記述しているスクリプト -------------------------------------------- //吹き出しインスタンスを生成 var hukidasi:Hukidasi=new Hukidasi(); hukidasi.x=90; hukidasi.y=80; //吹き出しを表示リストに追加 stage.addChild(hukidasi); hukidasi.visible=false; btn1.addEventListener(MouseEvent.ROLL_OVER,btn1_handleRollOver); btn1.addEventListener(MouseEvent.ROLL_OUT,btn1_handleRollOut); //btn1のロールオーバー、アウト時のメソッド function btn1_handleRollOver(event:MouseEvent){ hukidasi.visible=true; } function btn1_handleRollOut(event:MouseEvent){ hukidasi.visible=false; } --------------------------------------------

    • ベストアンサー
    • Flash
  • Tweenerの繰り返しについて

    こんばんわ。 Tweenerの繰り返しについてですが、 3つの写真があり、それぞれライブラリで書き出し済みです。 そして、その3つの写真をフェードイン・フェードアウトで切り替えることに成功したのですが、その3つの写真を続けて繰り返し(無限ループ)ができません。 TweenerのonCompleteを使ってtween(myMc,i)に戻ってもスタックオーバーフローになってしまい、うまくいきません。 こちらソースになります↓ for (var i:int=1; i<=3; i++) { var mc_str:String = "photo0" + i; var myClassMc:Class = Class(getDefinitionByName(mc_str)); var myMc:MovieClip = new myClassMc(); main_mc.addChild (myMc); myMc.visible = false; myMc.name = mc_str; tween (myMc,i); } function tween (MC:MovieClip, num:Number):void { var _num:Number = num - 1; if (num >= 1) { trace (_num+"枚目通過"); Tweener.addTween(MC, { alpha:0, onComplete:function():void{MC.visible=true;},delay:1+(_num*5) }); trace (_num+"枚目終わり"); Tweener.addTween (MC, { alpha:1, transition:"linear", time:3, delay:1+(_num*5) }); trace (_num+"枚目準備完了!"); } } どうか、ご教授のほうよろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう