- 2010年3月 6日 13:07
- JSFL
MMExecuteとfl.runScriptを使うことで、SWFPnaelから外部のJSFLを叩けることは、このブログでも以前取り上げました。
SWFPanel開発時には、多用することになるこの二つのメソッド。
しかし、外部JSFLの関数を呼び出す際には注意が必要です。
引数はString
MMExecuteは第一引数にJSFLをStringで渡します。ということは、必然的に関数のパラメータもStringになります。
改行コードが含まれていると
やってしまいがちなのがこの問題です。SWFPanel側で何らかの処理をし、MMExecuteに引き渡す際、Stringに改行コードが混入していると、エラーが発生します。
MMExecute("fl.runScript(fl.configURI+'Commands/test.jsfl','test','mes\nsage')")
//SyntaxError: unterminated string literal
エスケープ
というわけで、MMexecuteで関数呼び出し、引数を渡す際は、必ずエスケープをするようにします。
ActionScript 3.0
as3では、トップレベル関数として、escape関数が用意されています。
import adobe.utils.MMExecute;
var param:String = escape("mes\nsage");
MMExecute("fl.runScript(fl.configURI+'Commands/test.jsfl','test','"+param+"')")
JSFL
JSFL側では、unescape関数を使用して、引数を元に戻します。
function test(str){
fl.trace(unescape(str))
}
- Newer: ActionScript 3.0 :: リユース・オブジェクトとプリレンダリング
- Older: links for 2010-03-04



