• 締切済み

マウスカーソルをカスタマイズしたのですが…

FlashCS4でAS3.0を使用しています。 マウスポインタを任意の形を作成して、ムービークリップにして、インスタンス名を「point_mc」として、ステージ上に配置し、スクリプトを下記のように記述しました。 ---------------------------------------------------------- Mouse.hide(); stage.addEventListener(MouseEvent.MOUSE_MOVE, function(e){ point_mc.x=stage.mouseX; point_mc.y=stage.mouseY; }); --------------------------------------------------------- その後にムービープレビューしますと、マウスのカーソルが先の任意に作成(point_mc)したのに変わってました。 そこまでは良かったのですが、その変わったマウスをボタンインスタンス(インスタンス名:skip_bt)に乗せても、ロールオーバーもしなければ、ボタンをクリックする事が出来ないのです。 因みに「skip_bt」に対するスクリプトは下記のように記述しました。 -------------------------------------------------------- skip_bt.addEventListener(MouseEvent.CLICK, introClick); function introClick(evt:MouseEvent):void { gotoAndStop("intro"); } -------------------------------------------------------- このままだと、ただマウスカーソルが、任意で作成したムービークリップになっているだけで、ボタンを押したりする事が出来ません。クリックする事が出来なくて困ってます。 解る方がおりましたら、アドバイス・ご指導をお願い致します。 よろしくお願い致します。

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

みんなの回答

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

こんな感じで良いのではないでしょうか。 -------------------------------- Mouse.hide(); // ↓付け加え point_mc.mouseEnabled=false; stage.addEventListener(MouseEvent.MOUSE_MOVE, function(e){ point_mc.x=stage.mouseX; point_mc.y=stage.mouseY; }); skip_bt.addEventListener(MouseEvent.CLICK, introClick); function introClick(evt:MouseEvent):void { gotoAndStop("intro"); } -------------------------------- 「ActionScript 3.0で始めるオブジェクト指向スクリプティング:第30回 マウスイベントとインスタンスの兄弟・親子の関係|gihyo.jp … 技術評論社」 http://gihyo.jp/dev/serial/01/as3/0030

gunhiro
質問者

補足

BlurFiltanさん: お忙しい中、ご回答有難うございました。 BlurFiltanさんのご指導のとおり、「Mouse.hide();」の後(下)に // ↓付け加え point_mc.mouseEnabled=false; を加えてみました。その後、ムービープレビューを行いましたが、 やはり結果的にはカーソルのみムービークリップに変更になり、ボタンの所にカーソルをおいても反応しなかったです。 やはり、私の記述に問題があるのかもしれません。 例で作成されましたのを見ると、とても解り易くて納得の行くものですので、その後、私も同じようなを作成して、記述してみました。 そしてムービープレビューしましたが、結果はやはり同じで、マウスがムービークリップになっただけでボタンには反応しませんでした。 因みに、スクリプトは下記のように記述しました。 ---------------------------------------------------------- stop(); Mouse.hide(); point_mc.mouseEnabled=false; stage.addEventListener(MouseEvent.MOUSE_MOVE, function(e){ point_mc.x=stage.mouseX; point_mc.y=stage.mouseY; }); skip_bt.addEventListener(MouseEvent.CLICK, introClick); function introClick(evt:MouseEvent):void { gotoAndStop("intro"); } ------------------------------------------------------------ このような感じです。 お忙しい中、色々と親切ご丁寧に有難うございました。

関連する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
  • ActionScript 3.0 D&Dの実装

    ステージ上に、インスタンス20個配置し (addChildは使わずに、普通に最初から置きます。  インスタンス名は mc1 ~ mc20)  それぞれをドラッグアンドドロップで自由に動かしたいです。 以下のようにプログラムを書いたのですが いざドラッグしようとすると 「TypeError: Error #1006: value は関数ではありません at MethodInfo-1()」 っとエラーが出てしまいました。 っと出てしまいました。 一体何が原因でしょうか? また、解決方法がありましたら是非ともよろしくお願いします。 addEventListener(MouseEvent.MOUSE_OVER,getname); function getname(e:MouseEvent) {    var str= e.target.name; trace(str); //マウスカーソルを乗せたムービークリップのインスタンス名が出ます。 addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); function onMouseDown(e:MouseEvent) { str.startDrag(); } addEventListener(MouseEvent.MOUSE_UP, onMouseUp); function onMouseUp(e:MouseEvent) { str.stopDrag(); } }

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

  • actionscript3.0 オブジェクトの動的生成

    actionscript3.0についての質問です。 イラストレーターのテキストツールのように 任意の文字オブジェクトを複数生成し、生成された任意の文字オブジェクト をドラッグで移動する処理をactionScriptで実行したいと考えています。 現在actionscript3.0で行いたいと考えている一連の流れは以下の通りです。 1.ステージに配置したテキストフィールに任意の文字列を入力 2.入力された文字列を参照してムービークリップ内のダイナミックテキストに出力。 3.ステージにボタンを配置し、それを押すことでステージに1.2の手順によって作成されたムービークリップが生成。 4.生成されたムービークリップをドラッグすると動かすことができる。 1から3までの内容を下記のようなスクリプトで行いました。 //ダイナミックテキストを内包するためのムービークリップを定義 //埋め込みアセットクラスmcからインスタンスを生成 var word_mc:MovieClip = new mc( ); //ボタンクリックイベントを登録 create_btn.addEventListener( MouseEvent.Click, creClick ); //ボタンクリック時の処理 function creClick( evt:MouseEvent ):void { //テキストフィールドinputWordに入力されたテキストを変数inputに格納 var input:String = inputWord.text; //word_mc内に配置したダイナミックテキストoutputWordに入力テキスト内容を出力 word_mc.outputword.text = input; //word_mcを画面に表示 addChild( word_mc ); } //word_mcをドラッグで移動させるためのスクリプト word_mc.addEventListener( MouseEvent.MOUSE_OVER, wordMO ); function wordMO( evt:MouseEvent ):void { word_mc.addEventListener( MouseEvent.MOUSE_DOWN, wordMD ); word_mc.addEventListener( MouseEvent.MOUSE_UP, wordMU ); } function wordMD( evt:MouseEvent ):void { word_mc.startDrag( ); } function wordMU( evt:MouseEvent ):void { word_mc.stopDrag( ); } ひとつのオブジェクトを生成するだけならこれで問題ないのですが、 このスクリプトでは、、"車"、"自転車"、"飛行機"という文字列をそれぞれ内包した変数名もしくはクラス名の違うオブジェクトを生成することが できません。 埋め込みアセットクラスをあらかじめ複数作っておいて、クラス名を 連番で名づけ、クラス名から動的にオブジェクトを生成すれば 内容の異なるオブジェクトを生成することは可能ですが、 単語を追加するたびに埋め込みアセットクラスを作成しなければ ならない上、変数名は同じなため、個々のオブジェクトをマウスドラッグすることができません。 イラストレーターのテキストツールのように 任意の文字列を生成した後、個々にマウスドラッグできようにするには どうしたら良いのでしょうか。 どうかご指導のほど、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • MOUSE_MOVE マウスの動きと同方向に動く

    AS3初心者です。 マウス移動するとムービークリップ(mc)が回転するスクリプトです。 下記では、マウスを左右どちらに動かしても右回転しかしません。 マウス右移動では、右回転に。マウス左移動では、左回転にしたいのですが・・・。 var rot_speed:Number = 0; stage.addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent){ rot_speed += event.stageX * 0.1; msg.text = String(event.delta); }); mc.addEventListener(Event.ENTER_FRAME, function(event){ rot_speed *= 0.3; mc.rotation += rot_speed; });

    • ベストアンサー
    • 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
  • マウスオーバー/マウスアウトで反応するボタン

    はじめまして、Flash初心者です。 かなり基本的な質問で申し訳ないのですが、ご教授のほど、よろしくお願いします。 マウスオーバーで、モーションが再生され、 マウスアウトで、別のモーションが再生され(オーバーの逆回転のようなもの) ボタンをムービークリップで作成しているのですが、うまくいかなくて困っています。 ◆レイヤー2 //マウスオーバー butt.addEventListener( MouseEvent.MOUSE_OVER , fnon ); function fnon ( e:MouseEvent ):void{ gotoAndPlay(2); } //マウスアウト butt.addEventListener( MouseEvent.MOUSE_OUT , fnout ); function fnout ( e:MouseEvent ):void{ gotoAndPlay(11); } ◆レイヤー1 1 stop(); 10 stop(); 20 gotoAndPlay(1); (おそらくこれよりもいい方法があると思うのですが・・・) ASを入れる位置がおかしいのでしょうか・・・ よろしくお願いします。

  • AS3.0でマウスボタンの状態を調べたいのですが、良い方法はないでしょうか

    AS3.0になって、releaseOutsideに相当するものがなく、マウスボタンが領域外で離されたことを取得できず困っています。 いろいろ調べてみたんですが、良い方法が見つかりません。 作っているのはドラッグ&ドロップのスクリプトです。 startDrag()した後、領域外で離されたときにもstopDrag()できるように、stageに対してMOUSE_UPをリスナー登録しています。 my_mc.stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp); function onMouseUp(event:MouseEvent):void { my_mc.stopDrag(); my_mc.stage.removeEventListener(MouseEvent.MOUSE_UP,onMouseUp); } 通常はこれでうまくいくんだと思いますが、今作っているものには、ステージに選択可能テキストフィールドがあります。 ドラッグ中にそのテキストフィールドの上でマウスボタンを離すと、stageにMOUSE_UPイベントが発生しないようで、stopDrag()が働かず、マウスボタンを離していても、my_mcがくっついてきてしまいます。 ソーテック社の「Flash ActionScript3.0入門ノート」を購入してAS3.0の勉強をしているのですが、そのドラッグ&ドロップのパッケージ(SimpleDrag2.as)でも、選択可能テキストフィールドを置くと、同じ不具合が出てしまいます。 AS2.0では、releaseOutsideを使っていてうまくいきました。 マウスボタンの状態を取得する方法があれば、ENTER_FRAMEで状態を見張って、stopDrag()することもできると思うのですが、状態を取得する方法が見つかりません。 AS3.0で確実にstopDrag()できる方法をご存知でしたら、教えてください。 よろしくお願いいたします。

  • 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
  • 【flash】AS3のソースをすっきりさせたい(MCボタン)

    AS3を勉強しているのですが、何かもう少しソースをすっきりさせられないかと思っています。 MCの中に複数ボタン用のMCがあり、ロールオーバー・ロールアウト・クッリクの3パターン設定しています。よく本などで紹介されているように button1.addEventListener(MouseEvent.MOUSE_OVER,aover); button1.addEventListener(MouseEvent.MOUSE_OUT,aout); button1.addEventListener(MouseEvent.CLICK,aclick); function aover(evt){ button1.scaleX += 2;  ・  ・  ・ (続く) というような形で動かしています。MCのロールオーバー・ロールアウト時の動きは全て同じ値の拡大・縮小になるのですが、functionの中でbutton1.scaleX としているために、MCの数分functionを用意しないといけない状態です。 クリック時にはhttpから始まるリンク先にとばしている(ボタンごとにちがうアドレス)のですが、こちらも上と同様MC分のfunctionを用意しています。 これが20個も30個もあると動くは動くのですが、ものすごく長いソースになってしまいます。AS2の時はfunctionをどこかに用意しておいて、変数にインスタンス名を入れて(x = "button1"; のように)動かしていたのですが、今回それをやろうと思うと、インスタンス名を入れるfunctionを作らないといけなくてどちらにしても同じものを複数個つくらないといけないのかなぁ・・という気がしております。 動きに変更があった場合も全て変更しないといけなかったりでスマートでないなと感じています。 また、最初の button1.addEventListener(MouseEvent.MOUSE_OVER,aover); button1.addEventListener(MouseEvent.MOUSE_OUT,aout); button1.addEventListener(MouseEvent.CLICK,aclick); の部分は一つにまとめれたりしないでしょうか・・・(ここは無理でしょうか^^;) みなさん、このような場合どのように対処していますか?アドバイスよろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう