[mayaa-user:874] Re: PathAdjusterの挙動について

suga [E-MAIL ADDRESS DELETED]
2009年 12月 27日 (日) 13:24:40 JST


suga です。

2009/12/18 Susumu ISHIGAMI <[E-MAIL ADDRESS DELETED]>:
>> PathAdjuster はビルド時に呼ばれるものであり、「使い回す」のではなく
>> 「テンプレートにそう記述されていたことにする」ものです。
>> このためレンダリングのパフォーマンスに影響を与えることなく
>> 絶対パスへの置き換えが可能です。

すみません、確かにこの点に関して説明に誤りがありました。
m:attribute の場合、レンダリング時に動作します。

これは、複数のパスから利用されるコンポーネントの場合に
./images/${name}_icon.png
などスクリプトの出力結果をレンダリングパスからの相対パスに設定することを
想定した機能で、スクリプトの実行結果に対してのパス調整になりますので、ここで
${} を出力しても、ただの文字列になります。


ということで、現状では石上さんのされている方法か、
> PathAdjuster側では、
> "http:", "https:", "file:", "/"で始まる場合は、
> そのままリターンするという実装にしています。


InjectedNode の isOnTemplate 判定する方法です。

> PathAdjusterで、テンプレート側から呼ばれたのか、mayaaファイルから呼ばれたのか
> 制御できても良いと思います。isOnTemplate()は違うようですね?

CycleUtil.getServiceCycle().getInjectedNode().isOnTemplate() が true なら
m:attribute が無くテンプレートのみのもの、false なら m:attribute で
変更する属性です。
後者の場合、対応するテンプレートの属性、m:attribute の属性それぞれで
false の判定になりますので、元々の値が何か処理に影響する場合には
ちょっと工夫が必要かもしれません。

もうひとつ、CycleUtil.getServiceCycle().getProcessor() が null なら
ビルド時、null でなければ描画時、という判定も可能です。


標準機能として m:attribute の場合のみの動作を作るかどうかは、
要望が多ければということにしたいと思います。
するとすれば m:attribute の処理を細分化してカスタマイズ可能にする
ような形になるでしょう。


-- 
suga ( [E-MAIL ADDRESS DELETED] )


mayaa-user メーリングリストの案内