2016-11-15 41 views
0

它會拋出以下警告,但會在警告的情況下工作。在操作腳本3中從班級訪問根目錄

TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。在play_fla :: MainTimeline/play_fla ::幀1()

這裏是工作的代碼

package { 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 
    import flash.display.SimpleButton; 
    import flash.display.*; 
    import flash.text.*; 
    import flash.events.Event; 
    import flash.display.MovieClip; 

    public class ClickButton extends SimpleButton { 
    public var fLabel:String; 
    public var sName:String; 
    public var sNumber:Number; 

    public function ClickButton() 
    { 

    }  

    public function GotoSession(sesBut:SimpleButton, frameLabel:String, sceneName:String):void {   
    sesBut.addEventListener(MouseEvent.CLICK, gotoSes);   
    function gotoSes(event:MouseEvent):void { 
    trace("sesBut = " + sesBut.name); 
    trace("frameLabel = " + frameLabel); 
    trace("sceneName = " + sceneName); 
    trace("this.stage = " + this.stage); 
    trace("this.root = " + this.root); 
    MovieClip(root).gotoAndStop(frameLabel, sceneName); 
    } 
    } 
} 
} 

此外,它跟蹤以下

sesBut =家,=的FrameLabel菜單,sceneName =家庭,這.stage =未定義,this.root =未定義

this.stage和this.root是不確定的

回答

0

我真的爲什麼你需要寫這個類在這個purpos不明白e,但是你可以嘗試這個來解決你的問題。

類ClickButton:

package { 
    import flash.events.MouseEvent; 
    import flash.display.SimpleButton; 
    import flash.display.*; 

    public class ClickButton extends SimpleButton{ 
     public var fLabel:String; 
     public var sName:String; 

     function ClickButton() { 

     } 
     public function GotoSession(sesBut:SimpleButton, frameLabel:String, sceneName:String):void { 
      fLabel = frameLabel; 
      sName = sceneName; 
      trace("sesBut = " + sesBut); 
      trace("frameLabel = " + frameLabel); 
      trace("sceneName = " + sceneName); 
      trace("this.stage = " + this.stage); 
      trace("this.root = " + this.root); 
     } 
    } 
} 

主時間軸幀1:

import ClickButton; 
import flash.display.SimpleButton; 

var cb_1ClickButton = new ClickButton(); 
addChild(cb_1ClickButton); 
cb_1ClickButton.GotoSession(new SimpleButton, "frameLabel", "sceneName"); 

輸出:

sesBut = [object SimpleButton] 
frameLabel = frameLabel 
sceneName = sceneName 
this.stage = [object Stage] 
this.root = [object MainTimeline] 

直到ClickButton不是事件你不能訪問根也不階段。 ADDED或Event.ADDED_TO_STAGE無效。 您只能在添加實例時引用根或階段。

如果你想象出大局,你可以自己搜索和調試。 ;)

+0

嗨,謝謝你的答案。您能否向我解釋如何添加鼠標單擊處理程序以及Event.ADDED_TO_STAGE。 – Rajesh

+0

嗨,我添加了EventListener。它可以工作,但會引發一個錯誤,TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 – Rajesh

+0

此致,我不明白你的課堂的含義... 這是我的錯/問題。 爲什麼你想創建一個將監聽器添加到某些按鈕的類? 只要您的類不擴展MovieClip,Sprite或Simple按鈕,DisplayObjectContainer ...當您實例化它時,您沒有對根的引用,也沒有對Stage的引用。 這似乎有點棘手... – tatactic