今ちょっと検証している事項の一つに「ビルトインメソッドをカスタマイズできないのか?」というものがある。たとえばこういうこと
まぁこれだけ見ると「こんなの必要ないじゃん!」とか「loadの引数に書けばいいじゃん!」ってことになるのだけど、ちょっと環境がWEBじゃなくてローカルアプリベースで、しかもプログラムで直接SWFの中を叩いたりしているので、オーサリング環境が実動環境を再現できないという厄介な代物なわけ。つまりオーサリング環境では”load”は通常のビルトインメソッドを使用して動作検証を行い、実動環境で動かす際にはプログラム的にカスタムメソッドをSWFの中に埋め込んでしまって、強制的に実動環境に対応するようにしてしまおうということ。
まぁ単純に上記の書き方だとずっと”load”を参照するので無限ループに入ってしまうわけですが、たとえば
とか
とかして逃がしてみるものの、やっぱ参照しているところは”XML.load()”だからか望むような動きにはならない。うまく状況が説明できないのだけど、簡単な例で言えばオーサリング時には通常の”XML.load()”の機能で動作しデバッグできるのだけど、全体として組み込んだときに
という風に動作するようにビルトインを変えたいわけです。
こー書くと「元からカスタムメソッドで書けばいいじゃなぃ!」という話になるのですが、そのカスタムオブジェクトはオーサリング環境では適応できないという非常に特殊な環境なのです。うーんなんというか状況を伝えるのが非常に難しいものだなーー。
「ビルトインメソッドのカスタマイズ」への1件の返信
と思ったら解決。
—-
XML.prototype.load2 = XML.prototype.load;
XML.prototype.load = function(url) {
var filePath = _root._url.substr(0, _root._url.lastIndexOf(“/”)+1);
this.load2(filePath+url);
};
—-
“function”指定ではなく、直接代入して、その後でカスタムすればもともとの”load”は”load2″に移譲されますた。
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1515&forum=6