- ベストアンサー
Suzkaでダイナミックテキストに座標を表示
FLASH Suzkaで作成しています。 ダイナミックテキストに座標を表示させたいのですが、 下記のサイトを参考にしましたが、うまくいきません。 http://orange.2-d.jp/flash/action/20_mouse_xy_get_preview.html ↓「FLASHでの座標取得」-過去記事-教えて!goo http://oshiete1.goo.ne.jp/qa1087211.html x座標とy座標を表示させるためのダイナミックテキストと、 スプライト1を用意してこのように並んでいます。 スプライト1 x座標 y座標 スプライト1には、下記のスプリクトを記入しました。 onClipEvent (enterFrame) { _root.x=_root._xmouse; _root.y=_root._ymouse; } あと、過去記事を読むとダイナミックテキストをムービークリップにと 書いていたので、ムービークリップ=スプライト?(Suzuka)と解釈して x、y座標のダイナミックテキストを、それぞれスプライトにして試しましたが うまくいきませんでした。 Suzukaで座標をダイナミックテキストに表示する方法を 教えてください。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
書かれていらっしゃるスクリプトでちゃんと表示できますよ。 「x」という "変数名" のダイナミックテキストと 「y」という "変数名" のダイナミックテキストと 空のスプライトをキャンバス上に配置して 空のスプライト自体に書かれていらっしゃるスクリプトをそのままコピペ。 これで全く問題なしに動作しました。 ======================================== ただ、 その方法はFlash5時代の古いやり方ですし面倒ですから 普通はそういう方法をとりません。 Suzukaの基本仕様は SWF6~SWF8(+携帯ではSWF4) 作成です。 つまり普通は FlashPlayer6 以上をターゲットとして SWF を作成します。 その場合 ・テキストフィールドに変数名を付けるのは非推奨事項 ・関係ないムービークリップ(スプライト)は作る必要ない ということになります。 この FlashPlayer6 以上をターゲットとした Suzuka でのオーソドックスな方法を書きます。 まずシンボルリストのアイテム欄を右クリックしてダイナミックテキストを追加します。 このとき「テキストのプロパティ」パネルでフォント名に 「_ゴシック」 や 「_明朝」 や 「_等幅」 などのような 前に 「_(アンダースコア)」 の入ったフォントを指定するところがポイントです(↓図:左上)。 この、前に 「_(アンダースコア)」 の入ったフォントを「デバイスフォント」と言います。 デバイスフォントはフォントリストの上の方にあると思います。 そしてこのダイナミックテキストをレイヤーに2回追加します。 つまり、x座標用とy座標用の2つのテキストフィールドをキャンバス上に並べます。 これら2つが並んだ レイヤーリスト枠 のリスト名の部分のうち1つをダブルクリックするなどして、 「レイヤーのプロパティ」パネルを表示させて 「インスタンス名」となっている欄にインスタンス名を付けます。 ここではx座標を表示させるテキストフィールドのインスタンス名を 「zahyouX」 と付けることにしておきます。 y座標を表示させるテキストフィールドについても同様に操作して インスタンス名を 「zahyouY」 と付けることにしておきます。 その レイヤーリスト枠 を右クリックして「アクションレイヤー」を挿入します(↓図:右下)。 そのアクションレイヤーのフレーム1を選択して、 次のスクリプトコードを書けばできあがりです。 --------------------------------------------- // マウスが動いた時に実行するイベントハンドラメソッドを定義 _root.onMouseMove = function() { // 「zahyouX」の text プロパティにマウスのx座標を代入 zahyouX.text = _root._xmouse; // 「zahyouY」の text プロパティにマウスのy座標を代入 zahyouY.text = _root._ymouse; // 表示を即更新(あってもなくても良い) updateAfterEvent(); }; --------------------------------------------- 上のスクリプトでも全くかまいません。 しかし、 _root.onMouseMove=function(){} はムービークリップクラスのイベントハンドラメソッドです。 マウスの座標を随時取得することに、 まだ ムービークリップのしがらみ(Flash5での束縛) から抜け切れていません。 次のようにすると、 もう少し理にかなったスクリプトになります。 ------------------------------------------ // マウスの動きを監視するためのオブジェクトを作成 mouseObj = new Object(); // マウスが動いたときに実行するイベントリスナーを定義 mouseObj.onMouseMove = function() { // 「zahyouX」の text プロパティにマウスのx座標を代入 zahyouX.text = _root._xmouse; // 「zahyouY」の text プロパティにマウスのy座標を代入 zahyouY.text = _root._ymouse; // 表示を即更新(あってもなくても良い) updateAfterEvent(); }; // マウスクラスのリスナーとしてmouseObjを登録 Mouse.addListener(mouseObj); ------------------------------------------ どちらのスクリプトにしても、 「なんでこんなものが要るの!???」 という不自然なムービークリップ(スプライト)を作成する必要はありませんね。
その他の回答 (1)
- an631
- ベストアンサー率82% (28/34)
解説ページのサンプルスクリプトと、サンプルFla内のスクリプトが違うようです。 一度差しかえてみて下さい。 コチラではなく************** onClipEvent (enterFrame) { _root.x=_root._xmouse; _root.y=_root._ymouse; } **************************** コチラになっています************** onClipEvent (enterFrame) { _root.yoko=_root._xmouse; _root.tate=_root._ymouse; } **********************************
お礼
回答ありがとうございます。 こちらのスプリクトで出来ました^^ 「_root.x」ではなく「_root.yoko」 こちらだったんですね^^; 一応、いろいろ書き直して試してみたんですが うまくいかなかったのですが、問題はフォントの種類が 原因でした>w< ありがとうございました^^
お礼
回答ありがとうございました。 うまく表示出来ました^^ FlashPlayer6 以上は変数名を付けるのは非推奨事項ということですね。 その場合、「変数」ではなく、「インスタンス名」に記入ということですね。 最大の原因はフォントの選択でした>w< ダイナミックテキストで表示する場合のフォントは、 「_アンダー」が付いているフォントを選択しないといけないんですね^^; あとムービークリップ(スプライト)を作り、 そこにスプリクトを書き込まなくても アクションレイヤーを作り、そこにスプリクトを書き込む方法 これはとても勉強になりました^^ 確かにおっしゃるとおりテキストに表示するために それ用のムービークリップ(ストライプ)を作るのは 不思議なムービークリップ(ストライプ)になりますね^^; わざわざご丁寧に画像まで入れていただいて大変感謝しています。 本当にありがとうございました^^