2012-10-26 144 views
0

好的,所以我點擊按鈕時有一個按鈕到第15幀。如果xpsafety爲0,我想要創建一個孩子並將xpsafety設置爲1.因此,如果再次單擊該按鈕它不會顯示孩子和做計算as3兒童不會被刪除

名人堂10:

var xpsafety:int = 0; 
var xpclip:MovieClip = new xp(); 

RememberButton.addEventListener(MouseEvent.CLICK, GoToRemember); 


function GoToRemember(evt:MouseEvent):void { 
gotoAndPlay(15, "Scene 1"); 
if (xpsafety == 0) { 
    addChild(xpclip); 
    xpclip.x=41; 
    xpclip.y=835; 
    calculateExp(8); 
    xpsafety = xpsafety +1; 
} 


} 

15幀:

stop(); 


    BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety); 

    function GoBackSafety(evt:MouseEvent):void { 
     gotoAndPlay(10, "Scene 1"); 
     removeChild(xpclip); 
     } 

我得到的錯誤是這樣的:引發ArgumentError:錯誤#2025:提供的DisplayObject必須成爲t的孩子他打來電話。

我不明白這是什麼意思,任何提示?謝謝,麻煩您了。

其他問題,但它可能是相關的,儘管xpsafety不等於0的功能仍然熄滅(我知道,因爲calculateExp(8)發生

回答

-2

所有我需要做的是把我的變量,如果語句中第15幀.....如下:

stop(); 

BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety); 

function GoBackSafety(evt:MouseEvent):void { 
    gotoAndPlay(10, "Scene 1"); 

    } 

var xpclip:MovieClip = new xp(); 
if (xpsafety==0) { 
    var xpsafety:int = 0; 
    addChild(xpclip); 
    xpclip.x=41; 
    xpclip.y=835; 
    calculateExp(8); 
    xpsafety = xpsafety +1; 
    trace(xpsafety); 
    } 
0

嘗試做類似:

xpclip.parent.removeChild(xpclip); 
+0

我收到此錯誤:TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。打完時。 – Butterflycode

+0

這意味着您的xpclip對象爲空...您可以在刪除之前檢查它,也許。 – blue112

-1

您正在試圖從監聽器裏訪問xpclip變量,試試這個。

var mc:MovieClip = (root as MovieClip).xpchild; 
(root as MovieClip).removeChild(mc); 

如果仍然不能正常工作,請檢查是否mc不爲空。

+0

我有另一個Flash項目,我在偵聽器中使用了相同的變量,它的工作原理......我不太明白我需要用你放置的兩行代碼來做什麼。 – Butterflycode

2

,因爲我沒有任何框架腳本它已經有一段時間,因爲它很快就得到繁瑣且難以管理。見here

xpsaftey問題上,當您返回第10幀時,將重新運行整個腳本,並使用默認值0重新定義變量xpsaftey。您需要將聲明var xpsafety:int放置在較早的幀上,以防止出現這種情況。

您在for循環中使用xpsaftey的第二個示例只是將事情進一步混淆,因爲您在if語句的範圍內再次重新定義它。我建議大家閱讀有關變量scope