[AS]TypeError: Error #1006: frame1 は関数ではありません。 at _fla::MainTimeline/frame1()、となった場合の対処方法
MovieClipにおいて、特定のフレームのフレームアクションを実行することができるメソッドがあります。
任意のフレームのスクリプトを実行:frame + “フレーム数” + ();
たとえば、ステージに_mcというインスタンス名でMovieClipが配置してある場合。
(_mcには1,2,3フレームにスクリプトが書いてある)
frame+フレーム数というメソッドを実行することができます。
//_mc:ステージに配置してあるMovieClipインスタンスで //1,2,3フレームにスクリプトが書いてあり、内容は以下の通り //1フレーム目には、trace("_mc 1フレーム"); //2フレーム目には、trace("_mc 2フレーム"); //3フレーム目には、trace("_mc 3フレーム"); _mc.frame1(); //出力:_mc 1フレーム _mc.frame2(); //出力:_mc 2フレーム _mc.frame3(); //出力:_mc 3フレーム
このとき以下のようなエラーが発生するときがある。
TypeError: Error #1006: frame1 は関数ではありません。
at _fla::MainTimeline/frame1()
このときの原因の一つは、実行対象のMovieClipにリンケージ指定されているということ。
リンケージ指定した状態で、任意のフレームのスクリプトを実行しようと上記のようなエラーになるらしい。
また、動的に生成したMovieClipインスタンスについても、addFrameScript()メソッドでフレームにスクリプトを追加した場合についても、同じ結果になるようす。
以下、例
var mc:MovieClip = new MovieClip(); addChild(mc); //ムービークリップの1フレーム目にファンクション:testを追加 mc.addFrameScript(0,test); function test():void{ trace("mc script") } mc.frame1()//上記のようなエラーが発生する
ということは、動的に生成したmcにaddFrameScript()でファンクションを追加しても実行する術はないということ!?
まぁ理由はわからないけどそんな挙動をするみたい。
まぁ、こんなのそうそう使わないけども。
Tweet