• ベストアンサー

AS3に関しまして

mc.addEventListener(Event.ENTER_FRAME,function(event){ mc.scaleX += 0.01; mc.scaleY += 0.01; mc.x = mc.x+1; }); mc.xが10すすんだらストップさせるにはどう記述したら良いですか??

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

  • ベストアンサー
回答No.1

事前にmc.xの初期値を控えておいて、 差分が10未満の時だけ+1するようにしたら良いんじゃない? mc.addEventListener(Event.ENTER_FRAME,function(event){ mc.scaleX += 0.01; mc.scaleY += 0.01; if ((mc.x - mc.xの初期値)< 10) { mc.x = mc.x+1; } }); イベントそのものがいらないなら、removeEventListenerしちゃっても良いけど。

drmada
質問者

お礼

satomiさん!!できました!!賢いですね!!ありがとうございます。 ちなみにmcをクリックした時に mc.addEventListener(Event.ENTER_FRAME,function(event){ mc.scaleX += 0.01; mc.scaleY += 0.01; if ((mc.x - mc.xの初期値)< 10) { mc.x = mc.x+1; } }); させる方法教えていただけないでしょうか。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • addEventListenerでムービークリップ名を渡す

    AS3です。 複数のムービークリップに対し、 同じ処理をしたいのですが、 下記の書き方だと、かなり効率が悪いのですが、 mc1.addEventListener(Event.ENTER_FRAME, test); function test(event:Event):void{ trace(mc1.x); } mc2.addEventListener(Event.ENTER_FRAME, test1); function test1(event:Event):void{ trace(mc2.x); } functionの方は大体同じ処理なので、 trace(mc1.x);←ここのmc1を動的に 処理することはできないのでしょうか。 やりたいことはこんな感じです。 mc1.addEventListener(Event.ENTER_FRAME, test); mc2.addEventListener(Event.ENTER_FRAME, test); mc3.addEventListener(Event.ENTER_FRAME, test); function test(event:Event):void{ trace(【ここにそれぞれmc1,mc2,mc3が呼ばれる感じ】.x); } ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 Timerの使い方

    AS3.0 Timerの使い方 a_mc、b_mc、c_mcがあり、a_mcが再生された1秒後にb_mcを作動させ b_mcが再生された0.5秒後にc_mcを再生というようにしたいのですが その場合、Timerはどのようにすれば良いのでしょうか? 初心者ですので、なるべく基本的な作り方が理想です。 下記のコードを参照にして頂ければと思います。 また、下記で間違っている部分がありましたらご指摘ください。 Flash CS3を使用しております。 宜しくお願い致します。 a_mc.y = 450; b_mc.y = 450; c_mc.y = 450; a_mc.alpha = 0; a_mc.addEventListener(Event.ENTER_FRAME, a_up); function a_up(event:Event):void { a_mc.y -= 2; a_mc.x -= 1; a_mc.alpha += 0.03; if (a_mc.y == 200) { a_mc.removeEventListener(Event.ENTER_FRAME, a_up); } } b_mc.addEventListener(Event.ENTER_FRAME, b_up); function b_up(event:Event):void { b_mc.y -= 2; b_mc.rotation += 6; if (b_mc.y == 200) { b_mc.removeEventListener(Event.ENTER_FRAME, b_up); } } c_mc.addEventListener(Event.ENTER_FRAME, c_up); function c_up(event:Event):void { c_mc.y -= 2; c_mc.x += 1; if (c_mc.y == 200) { c_mc.removeEventListener(Event.ENTER_FRAME, c_up); } }

    • ベストアンサー
    • Flash
  • AS3.0で拡大縮小と透明度調整

    FLASH初心者です。 FLASHのActionscript3.0を使ってタイトルが透明度をフェードインフェードアウトさせながらゆっくり拡大していくようなアニメーションを作成しようと思いますが、どういったスクリプトを書けばいいのか分かりません。 現状では intro.addEventListener(Event.ENTER_FRAME,function(event){ intro.alpha *= 0.98; }); intro.addEventListener(Event.ENTER_FRAME,function(event){ intro.scaleX += 0.005; intro.scaleY += 0.005; }); このように記述していますが、 この状態ではゆっくりフェードインが再現できないので、手詰まりの状態になりました。 フェードインフェードアウトを再現するために何か良い方法は無いでしょうか? 是非ともご教授いただければと思います。

    • ベストアンサー
    • Flash
  • AS3.0 でフェードイン、

    AS3.0 でフェードイン、フェードアウトを繰り返したいんです。 _btnをマウスオーバーするとimg_mcがフェードインし、 _btnをマウスアウトするとimg_mcがフェードアウトするというものをつくりたいのですが、 下記スクリプトだと一通り動作を完了すると、ボタンにマウスを持っていっても反応しなくなります。 繰り返し動作させるにはどうしたらよいのでしょうか? var img_mc:MovieClip; img_mc.alpha = 0; _btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0); function xClick0(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ img_mc.alpha += 0.05; //スピード if (img_mc.alpha > 1){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } _btn.addEventListener(MouseEvent.MOUSE_OUT,xClick); function xClick(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2); function imgAlpha2(event:Event){ img_mc.alpha -= 0.05; //スピード if (img_mc.alpha == 0){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2); } } }

    • ベストアンサー
    • Flash
  • flashcs4 as3.0のエラーについて

    フレーム1にボタンを配置して ボタン(myb)を押すと、ボタンが消えると同時にマウスがmc表示に変わり mcをドラッグしてmc1に当たると、フレーム2の画面が表示するようにしたいのですが ムービープレビューして試してみると、フレーム2の画面(TツールでCLEARを書いているだけ)は表示するのですが、次のエラーが表示されてしまいます。 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」 どのように回避したらよいのでしょうか。よろしくお願いいたします。 stop(); mc.visible=false; myb.stage.addEventListener(MouseEvent.CLICK, mystart); function mystart(event){ myb.visible=false; Mouse.hide(); mc.visible=true; mymouse(event); } mc.stage.addEventListener(MouseEvent.MOUSE_MOVE,mymouse); function mymouse(event):void{ mc.x = stage.mouseX; mc.y = stage.mouseY; event.updateAfterEvent(); } mc.stage.addEventListener(Event.ENTER_FRAME,mymc); function mymc(e:Event):void{    if(mc1.hitTestObject(mc)){ gotoAndStop(2); } }

    • ベストアンサー
    • Flash
  • flashcs4 as3.0のエラーについて

    TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 at 2mouse_03_fla09_as3_fla::MainTimeline/mymouse() 以下のスクリプトを実行すると上記のエラーが発生してしまいます。 ネットで調べてもわかりませんでした。AS3.0を学習していることろです。 よろしくお願いいたします。 ---------------------------------------------------------- やっていることは、マウスをMC(mc)に変換して、mc1との当たり判定をしたいだけです。 実行すると、実行画面でマウスを動かすと同時に上記のエラー出てしまいます。 ----------------------------------------------------------- stop(); mc.visible=false; myb.stage.addEventListener(MouseEvent.CLICK, mystart); function mystart(event){ myb.visible=false; Mouse.hide(); mc.visible=true; mymouse(event); } mc.stage.addEventListener(MouseEvent.MOUSE_MOVE,mymouse); function mymouse(event):void{ mc.x = stage.mouseX; mc.y = stage.mouseY; mc.event.updateAfterEvent(); } mc.stage.addEventListener(Event.ENTER_FRAME,mymc); function mymc(event){ if(mc1.hitTestObject(mc)){ mc.stage.removeEventListener(Event.ENTER_FRAME,mymouse); mc.visible=false; } }

    • ベストアンサー
    • Flash
  • AS3でうまく動作しません

    使用環境 Mac OSX Flash CS4 下記スクリプトを1フレーム目に記述し、 動作確認をしたところmcの縦の長さが伸びたり縮んだりといった意図しない 動作をしてしまいます。 mcの大きさは幅200px高さ100pxです。 よろしくお願いいたします。 var mc:MovieClip = new test_mc(); addChild(mc); mc.x = 100; mc.y = 100; var testNum:Number = 1; mc.addEventListener(Event.ENTER_FRAME,testEF); function testEF(evt:Event):void { mc.y += testNum; if(mc.y <= 0 || mc.y >= 400){ testNum *= -1; } }

    • ベストアンサー
    • Flash
  • as3 getChildByNameに変数を利用する

    ※実際にやりたいことは違うのですが、 分かりやすくするため簡易的にしています。 ステージに配置された2つのインスタンスを y=300に移動するというものを作りたいと思っています。 (実際には100以上になるので動的に生成したいです。) var num:int = 2; var _mc:Array = []; var _mcName:Array = []; for(var i=0; i < num; i++){ _mc.push("test_mc"+i); _mcName.push("test_mc"+i); } for(var n=0; n < num; n++){ _mc[n] = new MovieClip; _mc[n].addEventListener(Event.ENTER_FRAME, function() { MovieClip(getChildByName(_mcName[n])).y = 300; }); } 上記を実行すると下記のエラーが出ます。 TypeError: Error #2007: パラメータ name は null 以外でなければなりません。 at flash.display::DisplayObjectContainer/getChildByName() at MethodInfo-1() 下記のように並べて記述するとうまくいくのですが・・・・ これを100個以上も書くのはばかばかしいので。。。 _mc[0] = new MovieClip; _mc[0」.addEventListener(Event.ENTER_FRAME, function() { MovieClip(getChildByName(_mcName[0])).y = 300; }); _mc[1] = new MovieClip; _mc[1」.addEventListener(Event.ENTER_FRAME, function() { MovieClip(getChildByName(_mcName[1])).y = 300; }); ご教授お願いいたします!

    • ベストアンサー
    • Flash
  • AS3.0にて。。

    AS3.0にて。。 先日本を参考に下記スクリプトを記述しました。 ほとんどのブラウザでは問題なく動作するのですが、 WINDOWSのIE6でのみローディングバーが表示されたまま止まってしまう事があります。 どなたが原因が分かりそうでしたら教えていただけないでしょうか? stop(); var _loaderInfo:LoaderInfo = this.loaderInfo; _loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); _loaderInfo.addEventListener(Event.COMPLETE, onLoaded); function onProgress(event){ var percent = Math.floor(_loaderInfo.bytesLoaded / _loaderInfo.bytesTotal * 100); loadingBar.percent_txt.text = String(percent); loadingBar.loaded_mc.scaleX = percent/100; }; function onLoaded(event) { _loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress); _loaderInfo.removeEventListener(Event.COMPLETE, onLoaded); this.play(); };

    • ベストアンサー
    • 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); } } } } } }