2011-12-18 5 views
0

私は、ActionScript3とネストされたスイッチのケースで簡単なメニューを書いています。 現在のフレームを選択したメニューで確認し、選択されたメニューが別のメニューを参照している場合は、トランジションして選択したフレームに移動し、選択したメニューが現在のフレームであれば簡単なメッセージをトレースします。 しかし、選択されたメニューと現在のフレームが等しい場合、私はこの迷惑なメッセージを受け取り、問題を解決するために何をしなければならないか分かりません。ActionScript 3: "TypeError:Error#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。 onスイッチ

私のコードは次のとおりです。

//Import TweenMax 
import com.greensock.*;; 
import com.greensock.plugins.*; 
import flash.events.MouseEvent; 

var frameNumber:int = currentFrame; 

TweenPlugin.activate([BlurFilterPlugin]); 

//Add the buttons into an array 
var buttonsArray:Array = new Array(s1t1,s1t2,s1t3,s1t4,s1t5); 

//Loop through the buttons array 
for (var i:uint = 0; i < buttonsArray.length; i++) { 
    //Add event listeners for the button 
    buttonsArray[i].addEventListener(MouseEvent.MOUSE_OVER, mouseOverButton); 
    buttonsArray[i].addEventListener(MouseEvent.CLICK, buttonClicked); 
} 

//Move the buttonBackground under the home button (= starting position) 
buttonBackground.x = s1t1.x; 
buttonBackground.y = s1t1.y; 

//Make the buttonBackground a bit bigger than the home button 
buttonBackground.width = s1t1.width + 10; 
buttonBackground.height = s1t1.height + 10; 

//Tween the buttonBackground to a random color using TweenMax 
TweenMax.to(buttonBackground, 0.1, {tint: Math.random() * 0xffffff}); 

//This function is called when the mouse is over a button 
function mouseOverButton(e:MouseEvent):void { 
    //trace(e.target.name + " was touched!"); 
    //Assign the button to a local variable 
    var button:MovieClip = (MovieClip)(e.target); 

    //Calculate the new target width and height for the buttonBackground 
    var targetWidth:Number = button.width + 10; 
    var targetHeight:Number = button.height + 10; 

    //Tween the buttonBackground's position, size and color (color is random) 
    TweenMax.to(buttonBackground, 0.5, {x: button.x, y: button.y, 
    width:targetWidth, height:targetHeight, tint: Math.random() * 0xffffff}); 
} 

//This function is called when a button is clicked 
function buttonClicked(e:MouseEvent):void { 
    switch(e.target.name){ 
     case "s1t1": 
      switch (currentFrame){ 
       case 5: 
        trace("Nowhere to go!"); 
       break; 
       case 6: 
        var myTM:TransitionManager = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        var myTM:TransitionManager = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        var myTM:TransitionManager = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        var myTM:TransitionManager = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 5; 
      myTM.addEventListener("allTransitionsOutDone", doneTrans) 
     break; 
     case "s1t2": 
      switch (currentFrame){ 
       case 5: 
        var myTM:TransitionManager = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        trace("Nowhere to go!"); 
       break; 
       case 7: 
        var myTM:TransitionManager = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        var myTM:TransitionManager = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        var myTM:TransitionManager = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 6; 
      myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t3": 
      switch (currentFrame){ 
       case 5: 
        var myTM:TransitionManager = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        var myTM:TransitionManager = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        trace("Nowhere to go!"); 
       break; 
       case 8: 
        var myTM:TransitionManager = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        var myTM:TransitionManager = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 7; 
      myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t4": 
      switch (currentFrame){ 
       case 5: 
        var myTM:TransitionManager = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        var myTM:TransitionManager = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        trace("Nowhere to go!"); 
       break; 
       case 7: 
        var myTM:TransitionManager = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        var myTM:TransitionManager = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 8; 
      myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t5": 
      switch (currentFrame){ 
       case 5: 
        var myTM:TransitionManager = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        var myTM:TransitionManager = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        var myTM:TransitionManager = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        var myTM:TransitionManager = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        trace("Nowhere to go!"); 
       break; 
      } 
      frameNumber = 9; 
      myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
    } 
} 
function doneTrans(e:Event):void{ 
    trace("Going frame: "+frameNumber); 
    gotoAndStop(frameNumber); 
} 

私には、Flash CS5および「greensock」プラグインを使用していて、私のエラーは次のとおりです。

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
     at _009_fla::MainTimeline/buttonClicked() 

答えて

1

あなたはときmyTMにイベントリスナーを追加するときに問題があります(現在のページのメニューボタンをクリックしたとき)、myTMがインスタンシエートされているかどうかを確認して、問題が解決されたかどうかを確認してください。

この1とあなたのbuttonClicked機能を置き換える:

function buttonClicked(e:MouseEvent):void { 
    //declaring new variables inside conditional cases is a bad practice 
    var myTM:TransitionManager; 
    switch(e.target.name){ 
     case "s1t1": 
      switch (currentFrame){ 
       case 5: 
        trace("Nowhere to go!"); 
       break; 
       case 6: 
        myTM = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        myTM = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        myTM = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        myTM = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 5; 
      //myTM.addEventListener("allTransitionsOutDone", doneTrans) 
     break; 
     case "s1t2": 
      switch (currentFrame){ 
       case 5: 
        myTM = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        trace("Nowhere to go!"); 
       break; 
       case 7: 
        myTM = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        myTM = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        myTM = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 6; 
      //myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t3": 
      switch (currentFrame){ 
       case 5: 
        myTM = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        myTM = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        trace("Nowhere to go!"); 
       break; 
       case 8: 
        myTM = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        myTM = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 7; 
      //myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t4": 
      switch (currentFrame){ 
       case 5: 
        myTM = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        myTM = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        trace("Nowhere to go!"); 
       break; 
       case 7: 
        myTM = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        myTM = new TransitionManager(s1text5); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       default: 
        trace("Nowhere to go!"); 
      } 
      frameNumber = 8; 
      //myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
     case "s1t5": 
      switch (currentFrame){ 
       case 5: 
        myTM = new TransitionManager(s1text1); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 6: 
        myTM = new TransitionManager(s1text2); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 7: 
        myTM = new TransitionManager(s1text3); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 8: 
        myTM = new TransitionManager(s1text4); 
        myTM.startTransition({type:Fade, direction:Transition.OUT, duration:0.25, easing:Back.easeOut}); 
       break; 
       case 9: 
        trace("Nowhere to go!"); 
       break; 
      } 
      frameNumber = 9; 
      //myTM.addEventListener("allTransitionsOutDone", doneTrans); 
     break; 
    } 

    //if myTM is not null (not empty) add the event listener 
    if (myTM) 
    { 
     myTM.addEventListener("allTransitionsOutDone", doneTrans); 
    } 
} 

「は部屋の多くは、あなたのコードの改善のためだたとえばそれだけで一つのスイッチまたは多くの、より良いアプローチを使用してやり直すことができますが、私はドンあなたのコードを大幅に変更したくありません。

+0

こんにちは、ありがとうございます。私の問題は解決しました。私は本当にあなたの助けに感謝し、私は十分な評判を得るとすぐに、私はあなたの答えを投票アップします..もう一度感謝します。あなたがそれを改善すれば私はうれしくなり、プログラミングの間違いを学びます。 –

関連する問題

 関連する問題