ActionScriptの初心者です。
なかなか上手くいかず困っています。
createTextFieldで作成したTextFieldをマウスのドラッグ&ドロップで移動可能にしようとしています。
onMouseDownのイベントで、クリックされたTextFieldの名前を拾おうとし、this._nameを表示してみましたが、TextFieldをクリックしても表示されません。
どのようにすれば、クリックされたTextFieldを認識しつかむことができるでしょうか?
どなたか御指導お願いします。
宜しくお願い致します。
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);
//////////////////////////////////////////////////////////////
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- マウス・キーボード ロジクールのマウスでの不具合について 2 2022/10/26 12:04
- PowerPoint(パワーポイント) パワーポイントのアニメーションについて 4 2023/06/14 16:25
- Excel(エクセル) エクセルのワークシートを簡単に別ファイルにする方法は? 5 2023/01/11 14:50
- Windows 10 Windows10の不具合(Critical Process Died) 9 2022/04/19 21:11
- マウス・キーボード real vnc viewer で遠隔先で操作が出来ない。 2 2023/07/24 15:00
- Excel(エクセル) Excelで図の書式設定を移動したい 1 2022/10/07 15:32
- Windows 10 Windows 10の立ち上げについて 2 2022/04/17 13:36
- バックアップ Windows11パソコンのデータを数クリックで完全に引っ越しするにはどうすれば良いでしょうか? 5 2022/10/11 14:08
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゲオでカードを作るのは何歳か...
-
スマホでサイトの画像を長押し→...
-
フラッシュゲームアーカイブ2
-
レジリエンス 変換キーが作動し...
-
拡張子「swf」の再生方法について
-
Flashの今後について
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホでサイトの画像を長押し→...
-
Form内のselectを連動させるに...
-
arduino プログラムについて
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
私のコンピューター上のファイ...
-
ダウンロードしたデジブックはa...
-
uwscでExcelに自動記入
-
レジリエンス 変換キーが作動し...
-
potplayerについて質問です
-
flash (.swf) を編集したい
-
chrome flash
-
VBAのコンボボックスの年月表示...
-
Flashplayerの運用について
-
iPhoneです。 Adobeフラッシュ...
-
自分でチラシを作りたいです!...
-
adobe flashのページが一回で表...
-
この曲はなんでしょう?
-
ヘッダーデザインをするさい形...
-
Excel VBAについて。
おすすめ情報