• ベストアンサー

createTextFieldで生成したテキストをマウス移動したい

ActionScriptの初心者です。 なかなか上手くいかず困っています。 createTextFieldで作成したTextFieldをマウスのドラッグ&ドロップで移動可能にしようとしています。 onMouseDownのイベントで、クリックされたTextFieldの名前を拾おうとし、this._nameを表示してみましたが、TextFieldをクリックしても表示されません。 どのようにすれば、クリックされたTextFieldを認識しつかむことができるでしょうか? どなたか御指導お願いします。 宜しくお願い致します。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 すみません サンプル2 の訂正です。 > 親MCの中に,テキストフィールドと子MCを作成して, > 子MCとマウスがヒットしていれば, > 親MCのドラッグを開始する。 > というような方法を取る必要が出てきます。 と書きましたが, よく考えると,テキストフィールドをムービークリップに入れた時点で, テキストフィールド自体がムービークリップの中身そのものになりますから, 透明な塗りの 子MC などを作成する必要はありませんでした。 したがいまして, サンプル2のスクリプトを次のように訂正します。 ////////////////////////////////////////////////////////////// // 表示位置と文字の大きさの設定 // x座標(※可変) var my_x = 100; // y座標(※可変) var my_y = 50; // 横の長さ(※可変) var my_w = 160; // 高さ(※可変) var my_h = 20; // //------ // 空のムービークリップ my_mc1 を 深度 0 に作成 _root.createEmptyMovieClip("my_mc1", 0); // // テキストフィールド my_text を my_mc1 の深度0 に作成 _root.my_mc1.createTextField("my_text", 0, my_x, my_y, my_w, my_h); // テキストフィールド my_text のプロパティを設定 _root.my_mc1.my_text.border = true; _root.my_mc1.my_text.type = "input"; _root.my_mc1.my_text.text = "ドラッグ&入力できますよ"; // //------ // リスナー用インスタンスを作成 var my_obj = new Object(); // マウスダウン時の動作定義 my_obj.onMouseDown = function() { // もし my_mc1 が マウスとヒットしていれば if (_root.my_mc1.hitTest(_root._xmouse, _root._ymouse)) { // my_mc1 をドラッグ開始 _root.my_mc1.startDrag(); } }; // マウスアップ時の動作定義 my_obj.onMouseUp = function() { _root.my_mc1.stopDrag(); }; // インスタンスをマウスクラスのリスナーに登録 Mouse.addListener(my_obj); //////////////////////////////////////////////////////////////

その他の回答 (1)

noname#35109
noname#35109
回答No.1

ドラッグするには startDrag などのスクリプトを使われていると思いますが, startDrag はムービークリップクラスのメソッドですよ。 テキストフィールドクラスのメソッドではありません。 したがって,テキストフィールドをドラッグしたいときは, ムービークリップの中にテキストフィールドを作成して, ムービークリップごとドラッグする必要があります。 ===サンプル1========= 新規ドキュメントを作成して, フレーム1 (フレームは1つしかないはずです) に, 次のスクリプトを コピペ して, 「制御」→「ムービープレビュー」してみてください。 スクリプトを書く(コピペする)以外に何かを作成する必要はありません。 ------------------------------------------- // 表示位置と文字の大きさの設定 // x座標(※可変) var my_x = 100; // y座標(※可変) var my_y = 50; // //------ // 空のムービークリップ my_mc を 深度 0 に作成 _root.createEmptyMovieClip("my_mc", 0); // // テキストフィールド my_text を my_mc の深度0 に作成 _root.my_mc.createTextField("my_text", 0, my_x, my_y, 0, 0); // テキストフィールド my_text のプロパティを設定 _root.my_mc.my_text.border = true; _root.my_mc.my_text.autoSize = true; _root.my_mc.my_text.text = "ドラッグできますよ"; // //------ // my_mcプレス時 _root.my_mc.onPress = function() { this.startDrag(); }; // //------ // my_mcからマウスを放したとき _root.my_mc.onRelease = function() { this.stopDrag(); }; // //------ // ドラッグアウトしたときもマウスを放したときと同じく _root.my_mc.onDragOut = _root.my_mc.onRelease; ------------------------------------------- 各スクリプトの意味は,コメント行に書いてありますから, 詳しい説明は省略しますが, とにかく,以上のようにしなければなりません。 ///////////////////////////////////////////////////////////////////// 上のものは,いわゆるダイナミックテキストです(入力不可)。 テキスト入力にしたい場合はさらに複雑になります。 親MCの中に,テキストフィールドと子MCを作成して, 子MCとマウスがヒットしていれば, 親MCのドラッグを開始する。 というような方法を取る必要が出てきます。 ===サンプル2========= サンプル1のスクリプトを全部消し, 次のスクリプトを コピペ して, 「制御」→「ムービープレビュー」してみてください。 これも,スクリプトを書く(コピペする)以外に何かを作成する必要はありません。 -------------------------------------------------------- // 表示位置と文字の大きさの設定 // x座標(※可変) var my_x = 100; // y座標(※可変) var my_y = 50; // 横の長さ(※可変) var my_w = 160; // 高さ(※可変) var my_h = 20; // //------ // 空のムービークリップ my_mc1 を 深度 0 に作成 _root.createEmptyMovieClip("my_mc1", 0); // // テキストフィールド my_text を my_mc1 の深度1 に作成 _root.my_mc1.createTextField("my_text", 1, my_x, my_y, my_w, my_h); // テキストフィールド my_text のプロパティを設定 _root.my_mc1.my_text.border = true; _root.my_mc1.my_text.type = "input"; _root.my_mc1.my_text.text = "ドラッグ&入力できますよ"; // //------ // 空のムービークリップ my_mc2 を my_mc1 の深度0 に作成 _root.my_mc1.createEmptyMovieClip("my_mc2", 0); // my_mc2内に透明な四角を描画 with (_root.my_mc1.my_mc2) { beginFill(0x0000FF, 0); lineStyle(0, 0xFFFFFF, 0); moveTo(my_x, my_y); lineTo(my_x+my_w, my_y); lineTo(my_x+my_w, my_y+my_h); lineTo(my_x, my_y+my_h); endFill(); } // //------ // リスナー用インスタンスを作成 var my_obj = new Object(); // マウスダウン時の動作定義 my_obj.onMouseDown = function() { // もし my_mc2 が マウスとヒットしていれば if (_root.my_mc1.my_mc2.hitTest(_root._xmouse, _root._ymouse)) { // my_mc1 をドラッグ開始 _root.my_mc1.startDrag(); } }; // マウスアップ時の動作定義 my_obj.onMouseUp = function() { _root.my_mc1.stopDrag(); }; // インスタンスをマウスクラスのリスナーに登録 Mouse.addListener(my_obj); -------------------------------------------------------- このサンプル2を動かしてみるとわかると思いますが, いわゆるところの, ダイナミックテキストのテキスト選択可能バージョンは無理ですね。 文字を選択しようと思えば,ドラッグされてしまいます。

関連するQ&A

  • クリックするたびにテキストを1個ずつ表示させる

    マウスクリックをしてテキストを1個ずつ表示させたいです。 stage.addEventListener(MouseEvent.CLICK, mc); function mc(event:MouseEvent):void{ var text1 : TextField = new TextField(); text1.text = "Hello World"; this.addChild(text1); } を実行すると、クリックするたびテキストが1つずつ増えていきます。 これを前回のを消去して新たに表示というような形で1つずつ表示させることはできないでしょうか?

    • ベストアンサー
    • Flash
  • テキストフィールドを入力・移動できるようにしたい。ActionScript3.0

    FlashCS3でActionScript3.0で配置されたテキストフィールドを、マウスドラッグで移動も、入力もできる部品を作成したいのですがうまくいきません。ダイナミックテキストフィールドではなくて、テキスト入力フィールドを配置しておけば入力はできますがマウスで移動もできるようにするにはどのようなActionScript3.0で対処すればよいでしょうか。 分かる方は教えて下さい。よろしくお願いします。

  • 画像をドラッグ&ドロップで移動したい

    画像をドラッグ&ドロップで移動したいのですが、 DIV内でテキスト文だと移動できるのですが、画像だけだと移動できません(テキスト文と画像を入れるとテキスト文と一緒に画像が移動しますが、テキスト文なしの画像だけで移動させたいです。) 何故、画像だけでドラッグ&ドロップで移動させることができないのでしょうか?画像だけで移動させるにはどうしたらいいでしょうか? 宜しくお願いいたします。 IE7です。 <HTML> <HEAD><TITLE>画像をドラッグ&ドロップで移動したい</TITLE> </HEAD> <SCRIPT language="JavaScript"> var target; var isDrag=0; function document_onmousedown(){ isDrag=1; target=event.srcElement;} function document_onmousemove(){ if( isDrag ){ target.style.top=event.clientY; target.style.left=event.clientX;} } function document_onmouseup(){ isDrag=0; //alert(text1.style.top); //alert(event.srcElement); } </SCRIPT> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV style="position:absolute;font-size:24px;cursor:hand; "> <img src="画像.gif"> </DIV> <BR> <BR></BODY></html>

  • マウストラブル???

    本日突然マウスの動作がおかしくなりました。 【問題】 ファイルの移動ができなくなった。 【症状1】 エクスプローラで複数のファイルを選択して、ドラッグアンドドロップで移動させようとします。 複数のファイルの選択まではできます。 その後、ドラッグしようとするとファイルが開いてしまいます。 【症状2】 ドラッグアンドドロップしようとすると、エクスプローラ内でスクロールしてしまう。 【症状3】 ドラッグアンドドロップしようとすると、キャプチャ選択をしてしまう。 【症状4】 ドラッグアンドドロップしようとすると、エクスプローラが閉じてしまう。 問題になるのはドラッグアンドドロップによるファイル移動の場合だけで、それ以外の動作には問題が確認されたものはありません。 また、Windowsのサイズ変更をする際のドラッグアンドドロップ操作は普通に機能します。 OSはXPです。 再起動及びマウスコネクタの確認はしましたが、症状は変わりません。 マウスのプロバディでダブルクリックの速度を遅くしてみましたが、変化なしです。 原因と解決策に心当たりがあれば教えてください。

  • ウィンドウの移動

    Win8でデスクトップ上に開いたウィンドウを移動する方法を教えて下さい。 知りたいのは「マウスでウィンドウの上部を左クリックしてドラッグ&ドロップ」や「タッチパネルの操作」以外の操作です。 なぜそんなことが知りたいかというと、マルチディスプレイで電源が入っていないディスプレイに表示されているウィンドウを電源を入れ直したりせずに写っている方のディスプレイに短い手順で移動したいからです。 XPの場合はタスクバー上のアイコンを右クリックして移動(正確な名前ではないかもしれません)を選択してドラッグ&ドロップかまたは矢印ボタンで移動できましたがWin8には見当たらないので。

  • 複数生成したムービーの中のムービーはドラッグ移動できないようにしたい。

    複数生成したムービーの中のムービーはドラッグ移動できないようにしたい。 環境はActionScript3.0です。 chipというシンボルからdotMC+連番というインスタンスを複数生成しながら ドラッグできるようにして、その中にeditMC+連番というインスタンスを 生成しました。 ところがdotMC+連番はドラッグできるのですが、editMC+連番もドラッグすると それ単体で移動してしまいます。 おそらくevent.targetにしているのでeditMC+連番単体でも 動いてしまうのでしょうが、それを動かないようにできないでしょうか。 宜しくお願いします。 for(var j=0; j<10; j++) { var dotMC:chip = new chip(); dotMC.name="dotMC"+j; addChild(dotMC); dotMC.addEventListener(MouseEvent.MOUSE_DOWN, chipMCmove); dotMC.addEventListener(MouseEvent.MOUSE_UP, chipMCStop); var editMC:edit = new edit(); editMC.name="editMC"+j; chipMC.addChild(editMC); } //▼▼▼▼▼▼▼ドラッグ可能にする function chipMCmove(event:MouseEvent):void { event.target.startDrag(); } function chipMCStop(event:MouseEvent):void { event.target.stopDrag(); }

    • ベストアンサー
    • Flash
  • マウスの不調

    いつもお世話になります。 マウスの機能が突然おかしくなりました。 ドラッグとドロップができません。クリックは問題なく機能しています。 エクセルやワードなどのソフトでの操作ではきちんと機能するのですが、たとえばデスクトップ上のアイコンを移動させようとして、左クリックしながらマウスを動かせば通常はアイコンが移動しますよね? しかし、移動しません。また、インターネット上などでコピーや切り取り、貼り付けといった操作もできません。ソフトウェアの中ではコピー、切り取り、貼り付けと言った操作も問題なくできるのですが。 マウスの設定が間違っているのでしょうか? すべてにおいてマウスが操作できないのであればマウスの問題でしょうが、違うマウスを使っても同じような症状になります。 よきアドバイスがありましたらよろしくお願い致します。

  • 指定した位置にマウスを移動したい。

    表題のとおりで、VB6を使用して、 指定した座標にマウスを移動したいのですが、 どのようにやればよいでしょうか? また、VB6でマウスをクリックするイベントを 作るには、どうしたらよいでしょうか?

  • ドラッグ&ドロップしても移動できません

    PC画面上のショートカットアイコン・画像データ・音楽データ・書類等の全てのアイコンがドラッグ&ドロップによる移動ができなくなりました。 コピー(カット)&ペーストでの移動はできるのですが、マウスでドラッグしてどこへドロップしても全く移動しません。 マウスを一旦外して付け直したり、別のマウスで試しても全く反応しません。 設定とかが変わってしまったのでしょうか? 色々見てみたのですが自分の力だけでは分かりかねますのでどうか皆様の知識をお借りしたいと思い投稿させていただきました。 どうかよろしくお願いいたします。

  • ドラッグ&ドロップによる項目移動

    ドラッグ&ドロップによる項目の移動が出来るかどうかを教えて頂きたいです。 また出来るのであればやり方(参考サイト等)教えて下さい>< 検索してもドラッグ&ドロップでファイルパスの取得とかしか出ないので困っています>< ・リストボックスを2つ配置して選択している項目を2つのリストボックス間で移動したいです。 (1)リストボックス1の項目を選択 (2)リストボックス2へドラッグ&ドロップ (3)リストボックス1では選択されていた項目を削除、リストボックス2へは項目を追加 ・DataGridViewなどのテーブル表示の列の入れ替え Windowsのフォルダで「名前、更新日時、種類、サイズ、...」と並んでいる項目をマウス操作で入れ替えなど出来ますよね?あんな事も出来たりしませんかね? 「マウスでのドラッグ&ドロップで操作する」がポイントです よろしくお願いします。

専門家に質問してみよう