0

このエラーに関するいくつかのスレッドを読みましたが、状況を把握するために適用できませんでした...

私のフラッシュ ファイルは約 5 秒のアニメーションです。次に、各レイヤーの最後のキーフレーム (フレーム #133) にボタンがあります。私のフラッシュ ファイルはこの最後のキー フレームで停止し、6 つのボタンのいずれかをクリックして、私の Web サイトの別の HTML ページに移動できるはずです。

ボタンが存在するフレームに適用したアクション スクリプトを次に示します (別のレイヤーで、次のスクリーンショットを参照してください: http://www.footprintsfamilyphoto.com/wp-content/themes/Footprints/images/flash_buttonissue.jpg

stop ();


function babieschildren(event:MouseEvent):void 
{ 
    trace("babies children method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/babies-children"); 
    navigateToURL(targetURL, "_self"); 
}

bc_btn1.addEventListener(MouseEvent.CLICK, babieschildren);
bc_btn2.addEventListener(MouseEvent.CLICK, babieschildren);


function fams(event:MouseEvent):void 
{ 
    trace("families method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/families"); 
    navigateToURL(targetURL, "_self"); 
}

f_btn1.addEventListener(MouseEvent.CLICK, fams);
f_btn2.addEventListener(MouseEvent.CLICK, fams);


function couplesweddings(event:MouseEvent):void 
{ 
    trace("couples weddings method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/couples-weddings"); 
    navigateToURL(targetURL, "_self"); 
}

cw_btn1.addEventListener(MouseEvent.CLICK, couplesweddings);
cw_btn2.addEventListener(MouseEvent.CLICK, couplesweddings);

ムービーをテストすると、出力ボックスに次のエラーが表示されます。

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

テスト ムービーは適切なフレームで停止しますが、ボタンは何もしません (テスト ムービーでボタンをクリックしても、URL は開かれず、トレース ステートメントは出力ボックスに表示されません)。

ここで .swf ファイルを表示できます: www.footprintsfamilyphoto.com/portfolio

6 つのボタンすべてが適切なフレーム (フレーム 133) に存在すると確信しているので、それが 1009 エラーの原因ではないと思います。

また、3 つの function/addEventListener セクションを 1 つずつ削除してテストしてみましたが、それでも毎回 1009 エラーが発生しました。「stop ()」行を除くすべてのアクション スクリプトを削除すると、1009 エラーは発生しません。

何か案は??私は Flash に非常に慣れていないので、必要なことを明確にしていない場合はお知らせください。


更新:これは、コード自体ではなく、ファイルの構成に関係していると感じています。構造上の欠陥を明らかにするのに役立つ可能性がある、ここに含めることができるスクリーンショット/情報の提案があれば、教えてください。喜んでキャプチャ/投稿します。エラー 1009 の原因として何を探すべきかわかりません。インスタンス名を確認して再確認しました... すべてのボタンは、アクション スクリプトが配置されている同じフレーム (フレーム 133) に存在します。私は外部オブジェクトをインポートしていません...

どんな提案でも大歓迎です!

4

3 に答える 3

2

まったく同じエラーが発生しました。同じフレーム上にあるにもかかわらず、swf が時間通りにボタン インスタンスに追いついていないことについて、ここで何かを読みました。

アクションスクリプトの1フレーム前にボタンを拡張するだけで機能しました!

于 2012-09-27T22:10:25.577 に答える
0

ご回答ありがとうございます。もし私が CS3 のコピーを持っていたら、CS4 が私に与えてきた頭痛の種を考えると、私は喜んで元に戻すでしょう!

最終的に、ファイルを友人/フラッシュの第一人者に送信して、直接修正してもらいました。他の誰かに役立つ場合に備えて、彼の応答をここに貼り付けます!

正直なところ、Flash オーサリング環境からプログラムを問題なく実行できるので、これがあなたに行われていることに少し驚いています。問題が発生するのは、実際に swf を外部から起動したときだけです。

これらのボタン インスタンスをチェックすることで、間違いなく正しい軌道に乗っていました。ボタンがそのフレームに追加されているため、フレームスクリプトが実行されるのとほぼ同時に、それ自体が間違っているように見えます。そのため、プログラムがボタンの存在を認識する前に、ボタンで addEventListener を呼び出そうとしています。

私の解決策が正しいかどうかはわかりませんが、うまく機能し、比較的迅速に解決できるはずです。プログラムがそのフレームに到達したら、それらのボタンがそれぞれ存在することを確認します。このチェックを ENTER_FRAME イベントによって呼び出される関数内に配置しました。このイベントは、プログラムが実行されている限り、プログラムのフレームレートで継続的に発生します (これは、呼び出している stop() コマンドとは無関係です)。どのボタンも null ではないことを意味するチェックに合格するとすぐに、すべてのボタンのイベント リスナーを追加し、ENTER_FRAME のリスナーを削除して、このチェッカー メソッドの実行を停止します。

これが私が今そのフレーム用に持っているコードです。これが役立つかどうかを確認してください-今はうまくいきます。これに対処するためにどのような手法が推奨されているかを確認するために、これについてもう少し読む必要があります。

import flash.events.Event;

stop ();

//listen for the Flash player's ENTER_FRAME event...
this.addEventListener(Event.ENTER_FRAME, onEnterFrame, false);

//and call this checker function continually until all of the buttons are accounted for
function onEnterFrame(e:Event):void {
 if (bc_btn1 != null && bc_btn2 != null && f_btn1 != null && f_btn2 != null && cw_btn1 != null && cw_btn2 != null){
  bc_btn1.addEventListener(MouseEvent.CLICK, babieschildren);
  bc_btn2.addEventListener(MouseEvent.CLICK, babieschildren);

  f_btn1.addEventListener(MouseEvent.CLICK, fams);
  f_btn2.addEventListener(MouseEvent.CLICK, fams);

  cw_btn1.addEventListener(MouseEvent.CLICK, couplesweddings);
  cw_btn2.addEventListener(MouseEvent.CLICK, couplesweddings);

  //clean up the enter frame listener so that this function no longer gets called
  this.removeEventListener(Event.ENTER_FRAME, onEnterFrame, false);
 }
}



function babieschildren(event:MouseEvent):void 
{ 
    trace("babies children method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/babies-children"); 
    navigateToURL(targetURL, "_self"); 
}


function fams(event:MouseEvent):void 
{ 
    trace("families method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/families"); 
    navigateToURL(targetURL, "_self"); 
}


function couplesweddings(event:MouseEvent):void 
{ 
    trace("couples weddings method was called!!!");
    var targetURL:URLRequest = new URLRequest("http://www.footprintsfamilyphoto.com/portfolio/couples-weddings"); 
    navigateToURL(targetURL, "_self"); 
}
于 2010-07-14T21:10:48.497 に答える
0

私はCS3を使用してあなたのサンプルを再構築し、少なくとも私にとっては期待通りに動作し、あなたのコードも正しく見えます..私が想像できる唯一のことは、あなたのタイムライン。

この場合、同じエラーが発生します。そのため、確認する必要があります。

よろしく

于 2010-06-06T13:28:18.217 に答える