0

私は actionscript 3 の学習を始めたばかりです。以下は私のコードです。コードを起動すると、フレーム 36 でエラーが報告されますが、どの行にエラーが見つかりませんでした。デバッグを手伝ってください.... TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。flashmo_217_v_shape_fla::MainTimeline/frame36() で

以下はframe36のコードです

stop();
fm_button.visible = false;


import caurina.transitions.*;

var menu_label_North:Array = new Array("Animals Collection", 
                                                                                 "Flowers Collection",
                                                                                 "Leaves Collection",
                                                                                 "Mixed Collection",
                                                                                 "Extra Collection",
                                                                                 "Special Awards",
                                                                                 "Company Background",
                                                                                 "Contact Information");


var total_north:Number = menu_label_North.length;
var i_north:Number = 0;
var page_north:Number;
var main_menu_North:MovieClip = new MovieClip();
stage.addChild(main_menu_North);


for (i_north = 0; i_north < total_north; i_north++)
{
          var btn_north = new flashmo_button();
          btn_north.name = "btn" + i_north;
          btn_north.x = fm_button.x + i_north * ( fm_button.width + 12 );
          btn_north.y = fm_button.y;
          btn_north.buttonMode = true;
          btn_north.item_no = i_north;
          btn_north.flashmo_click_area.addEventListener( Event.ENTER_FRAME, btn_enter_north );


          var each_substring_north:Array = menu_label_North[i_north].split("|");
          btn_north.flashmo_button_label.fm_label.text = each_substring[0];
          btn_north.item_url = each_substring[1];
          main_menu_North.addChild(btn_north);
}


function btn_over_north(e:MouseEvent):void
{
          e.target.parent.over = true;
}


function btn_out_north(e:MouseEvent):void
{
          e.target.parent.over = false;
}


function btn_click_north(e:MouseEvent):void
{
          var mc= e.target.parent;
          if ( mc.item_url != undefined )
                    navigateToURL( new URLRequest( mc.item_url ), "_parent" );
          else
                    change_page_north(mc.item_no);
}


function btn_enter_north(e:Event):void
{
          var mc_north = e.target.parent;
          if ( mc_north.over == true )
                    mc_north.nextFrame();
          else
                    mc_north.prevFrame();
}


function change_page_north(no:Number):void
{
          for (var i:Number = 0; i < main_menu_North.numChildren; i++)
          {
                    var mc = MovieClip( main_menu_North.getChildAt(i) );
                    mc.over = false;
                    mc.flashmo_click_area.visible = true;
                    mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OVER, btn_over_north );
                    mc.flashmo_click_area.addEventListener( MouseEvent.ROLL_OUT, btn_out_north );
                    mc.flashmo_click_area.addEventListener( MouseEvent.CLICK, btn_click_north );
          }
          var mc_selected = MovieClip( main_menu_North.getChildAt(no) );
          mc_selected.over = true;
          mc_selected.flashmo_click_area.visible = false;
          mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OVER, btn_over_north );
          mc_selected.flashmo_click_area.removeEventListener( MouseEvent.ROLL_OUT, btn_out_north );
          mc_selected.flashmo_click_area.removeEventListener( MouseEvent.CLICK, btn_click_north );

          page_north = no + 1;
          play();
}


change_page_north(0);// default page on load


flashmo_credit.addEventListener( MouseEvent.CLICK, goto_fm_north );


function goto_fm_north(e:MouseEvent):void
{
          navigateToURL( new URLRequest( "http://www.flashmo.com" ), "_parent" );
}


music_credit.addEventListener( MouseEvent.CLICK, goto_music_north );


function goto_music_north(e:MouseEvent):void
{
          navigateToURL( new URLRequest(
          "http://www.premiumbeat.com/royalty_free_music/byPiece.php?id=2614" ),
          "_blank" );
}
4

1 に答える 1

0

私はあなたのエラーが由来する可能性があると思いますvar mc = MovieClip( main_menu_North.getChildAt(i) );

子供はflashmo_button権利である必要がありますか?を使用する場合は、に変換しMovieClip(obj)たいと言っています。既に MovieClip (または MovieClip の子孫) である場合は、 を使用する必要があります。objMovieClipas MovieClip

例えば

var mc:MovieClip = main_menu_North.getChildAt(i) as MovieClip

実際、DisplayObject将来的には常にMovieClip.

私が見ることができる潜在的な null オブジェクトの他の潜在的な領域は、を使用する場合e.target.parentです。クリックされたボタンを取得しようとしている場合は、e.currentTargetsee hereを使用する必要があります。それらのメソッドを呼び出す前に、有効なオブジェクトを取得するかどうかをテストしてください。

if(e.currentTarget && e.currentTarget.parent) {
    // now do something
}
于 2013-10-13T09:11:17.957 に答える