デジタル・インフォメーション/デジタル・フォー・ミー [PC等のデジタル製品の疑問、トラブル解決に]
PC・デジタル製品の疑問、困ったことを検索。
:AND検索 :OR検索
【 【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だけで
 送信するのとでは結果が違います。

}

【 Digital Information / Digital For Me】
Copyright (C) Gontaro-Systems. All Rights Reserved.