【 【Flash】targetPath()がわかりにくい 】
更新日時:2013年4月26日(金) 15:29:28
投稿日時:2013年4月18日(木) 16:22:48 ユーザー定義関数(カスタム関数)に慣れてくると ムービークリップやムービークリップのタイムラインに スクリプトを記述しないで、一箇所にどーんとまとめたく なるようになってきます。 例えば、ある関数に、ムービークリップ名(自分のパス名)を 引数で投げる場合に、targetPath()やthisなんかを使用すると 処理がしやすいのですが、targetPath()って安易に使わない方が いいのではないかという結論に達しました。 具体的には解析できていませんが、targetPath()の場合は 値が「文字列」になっているみたいで 処理をする際に、型を変換する作業を行わなければいけません。 その作業をしない場合は、正常にパスと認識されなくて スクリプトが正常に動作しないことがあります。 しかし、hogehoge(this)みたいな形で、そのまま「this」を送ってあげると パスと正常に認識されて、スクリプトもちゃんと動く…。 なんてことが少し前にありました。 パスをsplit()なんかで処理する場合はパスを一度文字列に変換する 作業が必要になる場合もあります。 チョットした落とし穴なので記録しておきます。 ■ムービークリップを変数で指定する際のやりかた。 var inst = "mouth_mov"; var inst_set = _root.face_mov[inst];//上下書式の違いはあるが動作は同じ var inst_set = _root["face_mov"][inst];//上下書式の違いはあるが動作は同 trace("T1 "+_root.face_mov[inst]._totalframes); trace("T1n "+_root.face_mov[inst]._name); trace(inst_set); trace("T2 "+inst_set._totalframes); trace("T2n "+inst_set._name); ※targetPath()を使用して上手くパスが飛ばせない。 targetPath()を使用しなくても「this」で指定することで 正常なパスが送信できる。(型が違う??) targetPath(this)で送信するのと単にthisだけで 送信するのとでは結果が違います。 |