• 締切済み

画面をドラッグ

ActionScript3.0で画面をドラッグして移動させるflashを作っています。 マウスを離してからも少しだけ動くように*2.75しています。 しかしhoge_mcが画面外に出た時にif文やflagを使って止めようとすると進む力が残っているっぽくて確実に止まってくれません。 どなたかこの問題の解決法が分かる方いませんか? *ソースです。(ステージにhoge_mcを置けば動きます。) import caurina.transitions.Tweener; var startX:Number = 0; var cameraRange:Number = 0; var tweenNum:Boolean =false; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown); this.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); function onDown(event:MouseEvent):void { tweenNum = false; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); startX = event.stageX; this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onUp(event:MouseEvent):void { this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onMove(event:MouseEvent):void { trace(hoge_mc.x); if(tweenNum == true){ Tweener.removeTweens(hoge_mc); return; } var cameraIkata = event.stageX - startX; hoge_mc.x += cameraIkata; cameraRange = cameraRange + cameraIkata; Tweener.addTween(hoge_mc, {x:cameraRange*2.75, time:3, transition:"easeOut"}); startX = event.stageX; } stage.addEventListener(Event.ENTER_FRAME,loop); function loop(e:Event):void { if (hoge_mc.x > 401) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 400.5; } if (hoge_mc.x < 0) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 0.5; } }

  • jsqrm
  • お礼率45% (16/35)
  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

  • notebleu
  • ベストアンサー率45% (34/74)
回答No.1

3.0が扱えないので確認出来ませんでしたが、 .x → ._x では駄目ですか? 見当違いでしたら御免なさい。

jsqrm
質問者

補足

notebleuさん>> 回答ありがとうございます! actionscript3.0はプロパティ(?)をあらわす時にはactionscript2.0のように_(アンダーバー)を入れないようです。

関連するQ&A

  • マウスアウトで非表示にする

    シーン1に、mc(ムービークリップ)とcomment1(ムービークリップ)を配置 mcにマウスオーバーするとcomment1が表示される。 mcよりマウスアウトするとcommen1が非表示になる。 という感じにしたいのですが、マウスアウトしても非表示に出来ないで困っています。 //----------------------------------- MovieClip(root).comment1.visible = false; var pointX:Number=70; var pointY:Number=50; mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); function fl_MouseOver(event:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc); function mouseMoveFunc(e:MouseEvent):void { MovieClip(root).comment1.visible = true; MovieClip(root).comment1.x=stage.mouseX+pointX; MovieClip(root).comment1.y=stage.mouseY+pointY; } } mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2); function fl_MouseOver2(event:MouseEvent):void { mc.removeEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); MovieClip(root).comment1.visible = false; } //-----------------------------------

    • ベストアンサー
    • Flash
  • Flash(ActionScript3.0)

    Flash(ActionScript3.0)でゲーム制作を行っています。 ActionScriptもFlashも最近初めて触れた初心者で、分からないことがたくさん湧いてきて困っています。 よろしければご回答お願い致します。 インスタンスをドラッグすることができる、という要素と、 インスタンスをクリックすると45度回転する、という要素を同時に入れたいのですが、 同時にプログラムを組むとドラッグだけをすることができず、 どうしてもドラッグ後に45度回転してしまいます。 (プログラムのソースはネットから拾ってきたものです)。 どうすればドラッグと回転を分けることができるのでしょうか。 プログラム自体は以下のように組みました。 ご回答いただければ嬉しいです。 よろしくお願い致します。 //インスタンスの回転プログラム mc1.addEventListener(MouseEvent.CLICK, kaiten); function kaiten(event:MouseEvent) { mc1.rotation += 45; } //インスタンスのドラッグプログラム //インスタンスの0点からのマウス座標用変数 var mc1X:int; var mc1Y:int; //マウスがインスタンスを押したらsec1開始 mc1.addEventListener(MouseEvent.MOUSE_DOWN,sec1); //sec1 マウスダウン座標確認、sec2開始 function sec1(event:MouseEvent):void { mc1X = event.localX; mc1Y = event.localY; addEventListener(MouseEvent.MOUSE_MOVE,sec2); } //sec2 インスタンス移動 function sec2(event):void { mc1.x = mouseX-mc1X; mc1.y = mouseY-mc1Y; //低FPSマウス移動スムーズ対応 event.updateAfterEvent(); } //マウスが離れたらsec3開始 stage.addEventListener(MouseEvent.MOUSE_UP,sec3); mc1.addEventListener(MouseEvent.MOUSE_OUT,sec3); //sec3 sec2停止 function sec3(event):void { removeEventListener(MouseEvent.MOUSE_MOVE,sec2); }

  • 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
  • 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
  • removeChild()についてご教授願います。

    AS3.0の初心者です。 Stratボタン、Stopボタンで以下のスクリプトで表示と非表示を繰返ししたいのですが、 Stopボタンで、単にremoveChild();にしますと、 「#2025: 指定した DisplayObject は呼び出し元の子でなければなりません。」 とエラーとなります。 色々と調べてみたのですが、よく判判りません。 Stopボタンの記述をどの様にすればよいのでしょうか? 初歩的質問で大変恐縮ですが、どうかご教授お願い致します。 [メインスクリプト] var stageH = stage.stageHeight; var stageW = stage.stageWidth; //Stratボタン start.addEventListener(MouseEvent.MOUSE_DOWN,gene); function gene(e:Event):void { for (var i = 0; i < 20; i++) { var mc:Candy = new Candy(); mc.x = Math.random()*stageW + 10; mc.y = Math.random()*stageH + 10; addChild(mc); } } //Stopボタン stop.addEventListener(MouseEvent.MOUSE_DOWN,stp); function stp(e:Event):void { removeChild(mc); この部分がよく判らないのですが、 どの様に記述したら良いのでしょうか? } --------------------------------------- [mc のスクリプト] var mcH:int = this.height; var mcW:int = this.width; var stageH = stage.stageHeight; var stageW = stage.stageWidth; var speedY:uint = Math.random() * 5 + 5; var speedX:uint = Math.random() * 2; addEventListener(Event.ENTER_FRAME,loop); function loop(Event):void { y += speedY; x += speedX; if ( y > stageH ) { y = - mcH; } if ( x > stageW ) { x = - mcW; } } -----------------------------------------

    • ベストアンサー
    • Flash
  • マウスでドラッグして絵を描くSWFを作っています

    マウスでドラッグして絵を描くSWFを作っています ムービークリップ"masu"を置き、 下のスクリプトで、マウスのボタンを押してしてそのままマウスを動かすと動きに沿って線は引かれ、hの値も正しくトレースされるのですが、ボタンをあげても TypeError: Error #1034: 強制型変換に失敗しました。flash.events::MouseEvent@2ac45ea1 を fl.motion.MotionEvent に変換できません。 というエラーが出力され、 function DEL(eventObject:MotionEvent):void{ removeEventListener(MouseEvent.MOUSE_MOVE,LINE); } が動きません。なぜでしょうか? また、AS1は少しはわかりますがAS3は初心者ですので、もっとよいスクリプトなどありましたら挙げていただけるとうれしいです import fl.motion.MotionEvent; var h = 1; this.masu.addEventListener(MouseEvent.MOUSE_DOWN,MOVE); this.masu.addEventListener(MouseEvent.MOUSE_UP,DEL); function MOVE(eventObject:MouseEvent):void{ this.masu.graphics.moveTo(mouseX,mouseY); this.masu.addEventListener(MouseEvent.MOUSE_MOVE,LINE); } function LINE(eventObject:MouseEvent):void{ h++; trace(h); this.masu.graphics.lineStyle(3,0x000000); this.masu.graphics.lineTo(mouseX,mouseY); } function DEL(eventObject:MotionEvent):void{ removeEventListener(MouseEvent.MOUSE_MOVE,LINE); }

    • ベストアンサー
    • Flash
  • 関数を停止するには。。。。

    function moveMC(e:Event):void { if (mc.x<550) { if (mc.x<cnt*50) { mc.x+=30; mm.x+=30; } moveMCを止めたいので b1.addEventListener(MouseEvent.MOUSE_OVER, mcstop); function mcstop(event:MouseEvent):void { moveMC.stop(); } としたら1061エラーでstopが定義されていないと出ました。 どう定義させたらいいのでしょうか??

    • ベストアンサー
    • Flash
  • もっとなめらかな線を描く方法

    マウスダウンしたままマウスを動かすと軌跡が残るようにしてマウスアップでそれが終わるという、一般的な「線を描く」というプログラムをActionScript3で書きました。 しかし、以下のコードでは物足りないのです。もっとなめらかに線を描きたいのです、このコードではカクカクしていると感じます。updateAfterEventもしてみましたが、まだ満足できません。よいアルゴリズムなど、ご存じの方おりましたらアドバイスを下さい。よろしくお願いします。 言語は、ActionScript3で回答願いたいですが、AS2やAS1や他の言語しか知らないけど改善方法は思いつくといった場合、その言語でも構いません。なんとか翻訳してみようと思います //フレームアクションです var nowdown:Boolean=false; var oldX:Number=0; var oldY:Number=0; var g:Graphics=this.graphics; g.lineStyle(5,0x00ffff); stage.addEventListener(MouseEvent.MOUSE_DOWN,PushPen); function PushPen(e:MouseEvent):void{ trace("down"); nowdown=true; oldX=stage.mouseX; oldY=stage.mouseY; } stage.addEventListener(MouseEvent.MOUSE_MOVE,MovePen); function MovePen(e:MouseEvent):void{ trace("move"); if(nowdown){ trace("move","if"); g.moveTo(oldX,oldY); g.lineTo(stage.mouseX,stage.mouseY); oldX=stage.mouseX; oldY=stage.mouseY; e.updateAfterEvent(); } } stage.addEventListener(MouseEvent.MOUSE_UP,UpPen); function UpPen(e:MouseEvent):void{ nowdown=false; }

    • ベストアンサー
    • Flash
  • アクションスクリプト3.0 MOUSE_OVER

    お世話になっております。 3枚の画像がMouse_overされた際に、別の画像に切り替わるアクションスクリプトを考えております。画像のインスタンス名で判定し、共通のファンクションで管理できればと思っております。 現時点では、参照値に代入できません というエラーがでています。インスタンス名と比較させるところで止まっているのはわかりますが、これをどのように解決したらよいのでしょうか。 googleでアクションスクリプト3.0 画像 切り替えで検索しましたが、いずれも、私がやりたいこととは違うものでした。一応、mouse_overの使い方では参考にしました。 ステージ上に二つのレイヤーを作成し、上にマウスオーバー状態、下にノーマルの状態の画像を配置しました。 どうか、ご教授いただけますでしょうか。 よろしくお願い致します。 現在のスクリプトは以下のような感じです。 public function init() {  aaa_over.visible = "false";  bbb_over.visible = "false";  ccc_over.visible = "false";  aaa.addEventListener(MouseEvent.MOUSE_OVER, overMouse);  bbb.addEventListener(MouseEvent.MOUSE_OVER, overMouse);  ccc.addEventListener(MouseEvent.MOUSE_OVER, overMouse); } private function overMouse(MC:MouseEvent):void{  var pointMc:MovieClip = MovieClip(MC.target);  var pic_over = pointMc.name;  pointMc.visible = "false";  pic_over+"_over".visible = "ture";  pointMc.addEventListener(MouseEvent.MOUSE_OUT, outMouse); } private function outMouse(mc:MouseEvent):void{  var pointMc:MovieClip = MovieClip(mc.target);  var pic_over = pointMc.name;  pointMc.visible = "ture";  pic_over+"_over".visible = "false"; }

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

専門家に質問してみよう