我使用ActionScript 3,我最近實施了新的,非常小的預加載器來代替,我用的是佔位符製作一個簡單的遊戲中的Adobe Flash CS4。但是,一旦我做到了這一點,我似乎打破了一切。的ActionScript 3:影片剪輯添加到舞臺沒有出現或工作
第一幀在「動作」中只有stop();
,然後是一個DocumentClass外部類文件(我所有的類都是外部的),它們設置了預加載器,它在它自己的類文件中。預加載器完成後,會將事件觸發到運行gotoAndStop(3);
的DocumentClass。在幻燈片3上是一個名爲Main的影片剪輯,它具有自己的類文件。
主要進口一堆東西,然後加載遊戲的開幕畫面。此時一切都基本崩潰了。任何嘗試修改此開幕屏幕上的東西(同時包含類文件和MovieClip對象)都會導致「TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法」。我認爲這段代碼可能在MovieClip處於舞臺之前運行,因此我添加了addEventListener(Event.ADDED_TO_STAGE, onAddtoStage);
並將代碼移至onAddtoStage
函數;而這樣做trace("this is the stage: "+stage);
和trace("this is my parent: "+this.parent);
將返回正確的,非空值,我還是不能做任何修改(例如,製作一個MovieClip對象我想隱藏通過設置invisibleBG.alpha = 0;
無形仍返回錯誤#1009)。
此外,儘管舞臺上可以看到MovieClip,但MovieClip的開幕畫面不顯示。我不知道這是否是背後的主要對象莫名其妙,但似乎它根本就沒有在舞臺上的。
有下面一些我的代碼。如果這不能說明問題所在,我可以添加更多內容。我一直在爲此撓頭,當然,我花了兩天的時間才弄清楚我無法修改TextField
,因爲它延伸到兩幀以上,所以可能有一個非常簡單的解決方案。在此先感謝您的幫助!
這裏的大部分處理初始加載類:
public class DocumentClass extends MovieClip
{
public var loadingScreen:LoadingScreen;
public function DocumentClass()
{
loadingScreen = new LoadingScreen();
addChild(loadingScreen);
stage.stageFocusRect = false;
loadingScreen.addEventListener(Event.COMPLETE, onPreloaderComplete);
loadingScreen.setLoaderInfo(loaderInfo);
}
public function onPreloaderComplete(e:Event):void
{
loadingScreen.removeEventListener(Event.COMPLETE, onPreloaderComplete);
removeChild(loadingScreen);
loadingScreen = null;
gotoAndStop(3);
}
}
這裏的主要類的相關部分:DesktopScreen,
public class Main extends MovieClip
{
public function Main()
{
showDesktop();
}
public function showDesktop():void
{
desktopScreen = new DesktopScreen();
addChild(desktopScreen);
stage.focus = desktopScreen;
}
}
和相關部分的遊戲的開始屏幕:
public class DesktopScreen extends MovieClip
{
public function DesktopScreen()
{
addEventListener(Event.ADDED_TO_STAGE, onAddtoStage);
}
public function onAddtoStage(e:Event):void
{
Mouse.show();
invisibleBG.alpha = 0;
fakeButton.stop();
time = new Time;
time.x = 504;
time.y = 3;
addChild(time);
}
}
TL; DR我正在添加一個MovieClip到舞臺上,即使我可以通過trace
來判斷它認爲它在舞臺上的功能,但是我無法以某種方式查看它或修改它的任何內容這將需要它實際上在舞臺上。
您是在舞臺時間線的幻燈片3上還是在'DocumentClass'的幻燈片3上放置了'Main'? – Foggzie
@gunther'Main'位於舞臺時間軸的第3張幻燈片上。出現「Main」(MovieClip只包含背景)並運行代碼,但DesktopScreen運行代碼但不顯示。希望有助於清理事情。 –