我正在使用 ActionScript 3 在 Adobe Flash CS4 中制作一个简单的游戏。我最近实现了一个新的、非常小的预加载器来替换我正在使用的占位符。然而,一旦我这样做了,我似乎打破了一切。
第一帧只有一个stop();
“动作”,然后是一个 DocumentClass 外部类文件(我所有的类都是外部的),它设置了预加载器,它在它自己的类文件中。一旦预加载器完成,它会触发一个事件到 DocumentClass,它运行一个gotoAndStop(3);
. 第三张幻灯片是一个名为Main的影片剪辑,它有自己的类文件。
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)。
此外,虽然Main MovieClip 在舞台上可见,但打开屏幕 MovieClip 不显示。我不确定它是否在 Main 对象的后面,但它似乎根本不在舞台上。
下面是我的一些代码。如果这不能显示问题所在,我可以添加更多。我一直在为此挠头;当然,我花了两天时间才弄清楚我无法修改 aTextField
因为它被拉伸了两帧,所以可能有一个非常简单的解决方案。在此先感谢您的帮助!
这是处理初始加载的大部分类:
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 );
}
}
这是Main类的相关部分:
public class Main extends MovieClip
{
public function Main()
{
showDesktop();
}
public function showDesktop():void
{
desktopScreen = new DesktopScreen();
addChild( desktopScreen );
stage.focus = desktopScreen;
}
}
以及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
函数判断它认为它在舞台上,但我看不到它或以需要它实际的方式修改它的任何内容在舞台上。