• 締切済み

AS3.0

ボタン(btn_start)を押したらMC(main1)が動く指定をしたつもりですが ボタンを押すとmain1が消えてしまいます。 間違っている部分がお分かりになる方、宜しくお願い致します。 import fl.transitions.Tween; import fl.transitions.easing.*; var main_uptween:Tween; btn_start.addEventListener(MouseEvent.CLICK,main_start); function main_start(event:MouseEvent):void { main1.addEventListener(Event.ENTER_FRAME,main_up); } function main_up(event:Event):void { main_uptween = new Tween(main1, "y", Bounce.easeOut, 400, 10, 4, true); }

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

みんなの回答

回答No.1

TweenクラスはENTER_FRAMEのリスナーで 使うようなもんではないと思いますよ そんなことしなくてもTweenクラスは対象を動かしてくれます function main_start(event:MouseEvent):void { main1.addEventListener(Event.ENTER_FRAME,main_up); } function main_up(event:Event):void { main_uptween = new Tween(main1, "y", Bounce.easeOut, 400, 10, 4, true); } ↓ main_uptween = new Tween(main1, "y", Bounce.easeOut, 400, 10, 4, true); main_uptween.stop() function main_start(event:MouseEvent):void { main_uptween.start() }

chiko_808
質問者

お礼

H240S18B73 様 ありがとうございます。 教えて頂いた通りに書いてみましたが、ボタンを押しても反応せず btn_start.addEventListener(MouseEvent.CLICK,main_start); を一番上に足すと、反応しました。 >TweenクラスはENTER_FRAMEのリスナーで >使うようなもんではないと思いますよ あるサイトを参考にして、作ったのですがスマートな使い方では ないのですね? 本やサイトを見て勉強しておりますが、根本的な書き方や考え方が まだ理解出来ておらず、簡単なTweenクラスからと思っていたのですが なかなか難しいです(>_<)

関連するQ&A

  • AS3 mc0~5をまとめて処理する

    AS3初心者です。 forにてmc0~5をまとめて処理したいのですが、 下記スクリプトで、function内mc0の書き換え方が分かりません。 よろしくお願いします。 ///////////////////////////////////////// import fl.transitions.easing.Regular; import fl.transitions.TweenEvent; var twObj:Tween; for(var i:int=0;i<=5;i++){ this["mc"+i].addEventListener(MouseEvent.ROLL_OVER, hiraku); this["mc"+i].addEventListener(MouseEvent.ROLL_OUT, modoru); } function hiraku(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,0,30,1,true); } function modoru(eventObj:MouseEvent):void { //mc0を["mc"+i]としまとめて処理したい twObj=new Tween(mc0,"rotation",Regular.easeInOut,30,0,1,true); } //////////////////////////////////////////

    • ベストアンサー
    • 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
  • 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
  • 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
  • for文でまとめる

    FLASH CS3 アクション 2.0 Tweenを用いてイーズアウトの5種類をballを使って表現しようとしています。 ステージにball1からball5を置き、ボタンbt1を押すと右方向に移動させます。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; bt1.onRelease = function() { //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween1:Tween = new Tween(ball1, "_x", Regular.easeOut, 39, 400, 2, true); var myTween2:Tween = new Tween(ball2, "_x", Strong.easeOut, 39, 400, 2, true); var myTween3:Tween = new Tween(ball3, "_x", Elastic.easeOut, 39, 400, 2, true); var myTween4:Tween = new Tween(ball4, "_x", Back.easeOut, 39, 400, 2, true); var myTween5:Tween = new Tween(ball5, "_x", Bounce.easeOut, 39, 400, 2, true); }; http://okwave.jp/qa/q7042246.htmlの回答で教えていただきましたfor文を 参考にして書き直しをしてみましたがBounce.easeOutのみ動きますが本来のもの とは異なります。どのように変更すればいいのか教えてください。 //Tweenクラスを使用できるようにインポート import mx.transitions.Tween; import mx.transitions.easing.*; var easeList:Array = new Array(); //イージングの種類 easeList[1] = "Elastic.easeOut"; easeList[2] = "Strong.easeOut"; easeList[3] = "Elastic.easeOut"; easeList[4] = "Back.easeOut"; easeList[5] = "Bounce.easeOut"; bt1.onRelease = function() { for (var i:Number = 1; i<=5; i++) { _root["ball"+i]; for (var i:Number = 1; i<=5; i++) { easeList[i+1]; //インスタンス「ball」の動きをTweenクラスを使って制御 var myTween = new Tween(_root["ball"+i], "_x", easeList[i+1], 39, 400, 2, true); } } };

    • ベストアンサー
    • Flash
  • as3でボタンにリンクをはる方法!

    質問ばかりで申し訳ないですが、お世話になります。 flashCS4&Actionscript3を使っているものです。 「ボタンにリンクをはる方法を探しています。 (どうしても 1093のシンタックスエラーになってしまい、困っています。)」 現在作成しているものは、以下のような構造です。 ************************************************************* ステージ ↓ムービークリップ【インスタンス名(menu_mc)】 ________________________________________ ・ボタン【インスタンス名(btn1_btn)】 ・ボタン【インスタンス名(btn2_btn)】 ・ボタン【インスタンス名(btn3_btn)】 ________________________________________ *************************************************** menu_mcの中で、以下のように記述しました。 btn1_btn.addEventListener(MouseEvent.CLICK,gotowebpage1); function gotowebpage1(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn2_btn.addEventListener(MouseEvent.CLICK,gotowebpage2); function gotowebpage2(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn3_btn.addEventListener(MouseEvent.CLICK,gotowebpage3); function gotowebpage3(event : MouseEvent) :void { navigateToURL(new URLRequest("http://www.yahoo.co.jp")); } すると、1093のシンタックスエラーになってしまいます。 うまく動作させる為には、他にどんな作業を行ったらいいのでしょうか、 よろしくお願いします!!!

    • ベストアンサー
    • Flash
  • ロールオーバーで下の画像を表示させる

    質問番号:7020788を参考にしています。 http://okwave.jp/qa/q7020788.html 一番下に写真(400x400)を置き、その上にmc0~mc3(200×200)を4つ配置しました。 mc0にロールオーバーすればmc0がフェードアウトして200×200だけが写真を見え るようにしたいと考えています。 同様にmc1にロールオーバーすればmc1がフェードアウトします。 しかし、どのmcにロールオーバーしてもmc0~mc3の全体がフェードアウトしてし まい、私が思っておるように動作いたしません。 次にアクションスクリプトを示します。 mport fl.transitions.*; import fl.transitions.easing.*; mc0.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc1.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc2.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc3.addEventListener(MouseEvent.ROLL_OVER,onrollOver); function onrollOver(eventObj:Event):void { for (var i:Number = 0; i<=3; i++) { TransitionManager.start(this, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); removeEventListener(MouseEvent.ROLL_OVER,onrollOver); } } FLASH CS3でアクションスクリプトは3.0で作っています。どうか対処策を教えて いただきたく思います。

    • ベストアンサー
    • Flash
  • AS3 記述方法

    ボタンが複数存在し、それぞれのボタンの処理をまとめたい時に どうするか考えています。 たとえばステージに3つのボタンインスタンス 「btn1」「btn2」「btn3」があるとします。 クリックすると、それぞれに応じた値を得るために ------------------------------------------------------------- btn1.addEventListener(MouseEvent.CLICK,syori1); function syori1(eventObject:MouseEvent):void{ trace("あんぱん"); } btn2.addEventListener(MouseEvent.CLICK,syori2); function syori2(eventObject:MouseEvent):void{ trace("しょくぱん"); } btn3.addEventListener(MouseEvent.CLICK,syori3); function syori3(eventObject:MouseEvent):void{ trace("カレーぱん"); } ------------------------------------------------------------- としているのですが、 たとえばもしこれが100個のボタンがあれば 100回同じような事を記述しないといけないので あまりよろしくないな・・・と思い、 ------------------------------------------------------------- for(var i=1; i<=3 i++){ this["btn"+i].addEventListener(MouseEvent.CLICK,syori); } function syori(eventObject:MouseEvent):void{ trace("ジャム"); } ------------------------------------------------------------- としたのですが、これではどのボタンをクリックしても"ジャム"がトレースされます。(当然ですが・・・) このような時、まとめて記述するにはどうすればよいでしょうか?

  • フラッシュについてcs3とcs4から

    今フラッシュについて勉強しているのですが、CS4のアクションスクリプトをCS3で動かそうとして、1046型が見つからないというエラーが出ました。もしよろしければ直し方を教えていただけませんか。 プログラムは stop(); btn01,addEventListener(MouseEvent.CLICK,jump_10); function jump_10(event:MotionEvent):void { gotoAndStop("10"); }; btn02,addEventListener(MouseEvent.CLICK,jump_20); function jump_20(event:MotionEvent):void { gotoAndStop("20"); }; btn03,addEventListener(MouseEvent.CLICK,jump_30); function jump_30(event:MouseEvent):void { gotoAndStop("30"); }; です。足りないものがありましたらご指摘ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS 3 mouseout & over

    以下のようにMOUSEOUT,MOUSEOVERをつかって、 インスタントにマウスオーバーするとその幅が増えていき、幅200のところで止まる。 インスタントからマウスアウトするとその幅が減っていき、幅60のところで止まる。 という事を意図して、記述しました。 しかしながら、マウスオーバーの内容は意図した通りのいくのですが、 マウスアウトの場合は少し幅が減っただけで、すぐに止まってしまいます。 どのように直せば、意図した通りに行くのでしょうか? お知恵をいただければ幸いです。 package { import flash.events.MouseEvent; import flash.events.Event; import flash.display.Sprite; public class main extends Sprite { var _sikaku:Sprite = new Sprite(); public function main(){ _sikaku.graphics.lineStyle(6,0x330066); _sikaku.graphics.drawRect(0,0,120,120); this.addChild(_sikaku); _sikaku.addEventListener(MouseEvent.MOUSE_OVER,big_off); _sikaku.addEventListener(MouseEvent.MOUSE_OUT,big_on); function big_on(event:Event):void { _sikaku.addEventListener(Event.ENTER_FRAME,tijimi); function tijimi(event:Event):void { if(_sikaku.width==60 ) { _sikaku.removeEventListener(Event.ENTER_FRAME,tijimi); } if(_sikaku.width > 60) { _sikaku.width -= 1} trace("stop!") } } function big_off(event:Event):void { _sikaku.addEventListener(Event.ENTER_FRAME,kakudai); function kakudai(event:Event):void { if(_sikaku.width < 200) { _sikaku.width += 1 trace("stop?") } if(_sikaku.width == 200) { _sikaku.removeEventListener(Event.ENTER_FRAME,kakudai); } } } } } }

専門家に質問してみよう