2011-06-30 37 views
0

我有一個Flash文件,其中第一幀包含兩個按鈕,其中一個將用戶轉到第二幀,另一個將它們轉到第三幀。在每個框架中,可以通過SimpleButtons操作各種文本字段和變量。第2幀和第3幀都有「後退」按鈕,可以將它們帶回第1幀。第三次播放幀時出錯

當前用戶第二次導航回第1幀(因此第三次播放),我的第二個按鈕出現不再存在,我收到一個錯誤。第1幀上的兩個按鈕都通過Flash IDE放置。爲什麼我的按鈕在前兩次完美無瑕的情況下彈出存在?下面是我的第1幀代碼「返回」按鈕簡單移除事件偵聽器,然後調用gotoAndStop(1)

var inited:Boolean; 
var cache:SharedObject; 
var libsans:Font = new libsansreg(); 

this.addEventListener(Event.ENTER_FRAME, frameEnter); 
stats.addEventListener(MouseEvent.CLICK, statsclicked); 
modules.addEventListener(MouseEvent.CLICK, modsclicked); 

function initcache():void 
{ 
    this.cache = SharedObject.getLocal("RPG_Shooter") 
} 

function frameEnter(e:Event):void 
{ 
    if (!inited) 
    { 
     inited = true 
     initcache() 
     this.gotoAndStop(1) 
    } 
} 

function statsclicked(e:MouseEvent):void 
{ 
    this.removeEventListener(Event.ENTER_FRAME, frameEnter) 
    stats.removeEventListener(MouseEvent.CLICK, statsclicked) 
    modules.removeEventListener(MouseEvent.CLICK, modsclicked) 
    this.gotoAndStop(2) 
} 

function modsclicked(e:MouseEvent):void 
{ 
    this.removeEventListener(Event.ENTER_FRAME, frameEnter) 
    stats.removeEventListener(MouseEvent.CLICK, statsclicked) 
    modules.removeEventListener(MouseEvent.CLICK, modsclicked) 
    this.gotoAndStop(3) 
} 

回答

1

我實際上是在一個點上有類似的問題。它與垃圾收集有關,它不是Flash中最好的垃圾收集,但IDE的編譯器設置使它更加瘋狂。有幾個技巧你可以嘗試哪些可能有幫助。

  • 確保在離開框架之前刪除所有聽衆。
  • 甚至在5/1000秒的時間內轉到「空白」框架(仍然有背景和樣式,但沒有可交互組件的東西)
  • 在第一幀中將變量名設置爲「null」 (因此,如果第3幀上的組件被命名爲「foo」,則在第1幀上放置foo = null
  • var foo:MovieClip放在第1幀上。對您可能正在使用的所有提前命名的影片剪輯重複。
+0

謝謝,空白幀技巧工作,所以問題解決了! :) – mayhew

相關問題