-1

MovieClip(ルート)を使用してスライドボタン機能を作成するときに問題が発生しました。

addEventListener (Event.ENTER_FRAME, onenterFrameHandler);

コマンドボタンを与えられたとき..addEventListener (MouseEvent.CLICK, fl_ClickToGoToScene_20);ボタンをクリックすると、出力が得られます

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

これは私のコードです:

var myVar:Boolean;
MovieClip(root).addEventListener(Event.ENTER_FRAME,onenterFrameHandler);
MovieClip(root).addEventListener(MouseEvent.CLICK, mouseClickHandler);

function onenterFrameHandler(event:Event):void
{
if (MovieClip(root).mouseY < 500)
    {
      myVar=false;
    }
if (MovieClip(root).mouseY > 500)
    {
       myVar=true;
    }

if (MovieClip(root).mouseX > 1266 && myVar==true)
{
imgbar.nextFrame();
} else {
    imgbar.play();
}
if (MovieClip(root).mouseX < 100 && myVar==true)
{
imgbar.prevFrame();
} else {
    imgbar.play();
}
    if (MovieClip(root).mouseX > 100 && mouseX < 1266 && myVar==true)
    {
        imgbar.stop();
    }
}

ボタンレイヤーで、ボタン/ムービークリップをコマンドするコードを入力します。

    btn1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);

function fl_ClickToGoToScene(event:MouseEvent):void
{
    MovieClip(this.root).gotoAndPlay(80, "Scene 2");
}

私を助けてください

4

2 に答える 2

0

シーン「Scene 2」では、一部またはすべての MovieClip がステージに表示されなくなりました。したがって、ENTER_FRAME ハンドラは を見つけることができなくなりimgbar、これがエラーの原因になります。これを取り除くにはimgbar、前のシーンと同じステージ名のクリップを含めるか、ENTER_FRAME リスナーimgbarが存在しない場合は削除します。

function onenterFrameHandler(event:Event):void
{
    if (!imgbar) root.removeEventListener(Event.ENTER_FRAME,onenterFrameHandler);
     // the rest stays the same
}
于 2012-05-26T12:50:26.610 に答える
0

function onenterFrameHandler(event:Event):void
{
    if (!imgbar) root.removeEventListener(Event.ENTER_FRAME,onenterFrameHandler);
     // the rest stays the same
}

ええ、私は少し変更してそれを見つけました。あなたのアドバイスに感謝します、weltraumpirat、これが最終的なコードです

    var myVar:Boolean=false;
    MovieClip(root).addEventListener(Event.ENTER_FRAME,onenterFrameHandler);
    MovieClip(root).addEventListener(MouseEvent.CLICK,fl_ClickToGoToAndStopAtFrame_28);


function onenterFrameHandler(event:Event):void
{
if (MovieClip(root).mouseY < 500)
    {
      myVar=false;
    }
if (MovieClip(root).mouseY > 500)
    {
       myVar=true;
    }

if (MovieClip(root).mouseX > 1266 && myVar==true)
{
imgbar.nextFrame();
} else {
    imgbar.play();
}
if (MovieClip(root).mouseX < 100 && myVar==true)
{
imgbar.prevFrame();
} else {
    imgbar.play();
}
    if (MovieClip(root).mouseX > 100 && mouseX < 1266 && myVar==true)
    {
        imgbar.stop();
    }
    if (!imgbar)root.removeEventListener(Event.ENTER_FRAME,onenterFrameHandler);
}

function fl_ClickToGoToAndStopAtFrame_28(event:MouseEvent):void
{
    MovieClip(root).removeEventListener(Event.ENTER_FRAME, onenterFrameHandler);

}
于 2012-05-27T18:32:57.360 に答える