AIRでpopforge
ちょいとAIRでpopforge使ったものを作ろうとしはじめてみたところ、いきなり「Loader.loadBytes() is not permitted to load content with executable code.」なるエラーが発生してつまづいた。
popforgeって、内部的にはswf作ってそれをLoader.loadBytes()で読んでごにょごにょしてるみたいなのですが、AIRの場合に限りLoader.loadBytes()でSWFのByteArray読んでごにょごにょする場合は、セキュリティの関係上LoaderContextで「allowLoadBytesCodeExecution」ていうプロパティをtrueに明示的に設定しないといけない模様。
というわけで、popforgeをAIRで使う場合、de.popforge.audio.output.SoundFactory.asの最後の「loader.loadBytes( swf )」を書き換えて
var context:LoaderContext=new LoaderContext(); context.allowLoadBytesCodeExecution=true; loader.loadBytes( swf ,context);
としてやると無事使えるようになった。ちなみにこのLoaderContext.allowLoadBytesCodeExecutionというプロパティについては、ヘルプには「将来このAPI変わるかもなので、変わったときはコードの変更して再コンパイルよろしくね」って書いてあったり…。