Actionscript 3 ActionScript3“的问题;调用可能未定义的方法“;

Actionscript 3 ActionScript3“的问题;调用可能未定义的方法“;,actionscript-3,flash,audio,video,Actionscript 3,Flash,Audio,Video,多亏了这里的人提供的信息,我对ActionScript3感到更舒服了,但我遇到了一个非常令人费解的问题 该程序(完全在AS3中完成,没有闪存)有几个不同的屏幕。一个人会做音乐,而且效果很好。另一个做视频。显然,当有人从音乐转到视频时,我们需要确保音乐已关闭。有一个主屏幕处理从一个到另一个的切换 我开始是这样做的,我得到“调用一个可能未定义的方法”的原因很明显。以下内容在主类中,其中“private var”部分位于类内部但在函数外部,而“music=new MusicPanel”部分位于其中一个

多亏了这里的人提供的信息,我对ActionScript3感到更舒服了,但我遇到了一个非常令人费解的问题

该程序(完全在AS3中完成,没有闪存)有几个不同的屏幕。一个人会做音乐,而且效果很好。另一个做视频。显然,当有人从音乐转到视频时,我们需要确保音乐已关闭。有一个主屏幕处理从一个到另一个的切换

我开始是这样做的,我得到“调用一个可能未定义的方法”的原因很明显。以下内容在主类中,其中“private var”部分位于类内部但在函数外部,而“music=new MusicPanel”部分位于其中一个函数中:

private var music:MusicPanel;

music = new MusicPanel(trackNames.songNames, trackNames.numSongs);
切换到视频面板时,我在MusicPanel中添加了一个名为StopMusic的公共函数,并在用户进入视频面板时调用该函数:

if(music != null)
    music.StopMusic();
这就产生了错误:

Call to a possibly undefined method StopMusic
我正在检查音乐是否为空,但那个错误看起来并不是一件坏事。因此,我将代码更改为:

私人音乐:MusicPanel=新MusicPanel()

并添加了一个函数,可以将歌曲名称和歌曲数量输入音乐类。这没有帮助-我得到了相同的错误,事实上,函数试图把歌曲的名称和歌曲的数量也得到了错误

同时,视频面板并没有给我那个错误,即使我已经用完全相同的方式布置了它

private var video:VideoPanel = new VideoPanel;
video.PlayVideo();
我在音乐屏幕上做了大量的设置,当它作为一个新类被调用时,我在视频屏幕上做的设置更少。我不确定这是否有区别

很明显,这里有些东西我不明白。有人知道发生了什么吗?我已经看了很多关于这个的问题,但是没有找到答案。我认为我做得对,但编译器认为我做错了,所以我一定做错了


稍后注意:一个答案提到了Sprite和MovieClip之间的区别。我试了一下,改成MovieClip没有帮助,而VideoPanel可以扩展Sprite。

MusicPanel、Sprite或MovieClip的基类是什么?如果是Sprite,请切换到MovieClip,看看它能做什么。在AS3中,精灵不是动态的,因此无法获取类中固有的属性。

问题似乎来自Actionscript 3或FlashDevelop。我构建了一个新模块(SongsPanel),它与原来的MusicPanel非常接近。它起作用了。如果我在MusicPanel中添加一个公共函数,编译器将返回相同的错误。如果我在SongsPanel中添加一个公共函数,一切都会正常工作

FlashDevelop是否跟踪某些隐藏文件中的错误?我猜这就是正在发生的事情,并且在完成的方式中有一个bug


皮塔但至少现在它可以工作了。

MusicPanel、Sprite或MovieClip的基本类是什么?我将它从Sprite改为MovieClip,这没有帮助。此外,VideoPanel还扩展了Sprite,这很有效。接下来,尝试将音乐设置为公共变量。您在哪里调用music.StopMusic();从…起音乐是呼叫者的一个实例(和孩子)?或者它是一个“兄弟姐妹”?换句话说,“音乐”和“视频”都是主对象或其他对象的子对象,而你从“视频”中调用“音乐”?视频和音乐都是私有变量。视频有效,音乐无效。音乐和视频都是Main的产物。非常令人费解…耶!每当我遇到这样的情况时,我都会构建一个单独的测试项目,其中代码和图形对象的绝对最少量仍然包含我的麻烦代码。通常,当我能单独看到它时,我就能找到问题所在。祝你好运,这就是我的结论。