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

时间:2014-05-03 22:36:24

标签: actionscript-3 flash audio video

部分感谢来自这里的人们提供的信息,我对Actionscript 3感到更加满意,但是我遇到了一个非常令人费解的问题。

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

我开始这样做,我得到“调用可能未定义的方法”的原因是显而易见的。以下是Main类,其中“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

我正在检查以确保音乐不为空,但该错误似乎并不是一件坏事。所以我将代码更改为:

private var music:MusicPanel = new MusicPanel();

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

与此同时,视频面板并没有给我这个错误,即使我已经以完全相同的方式进行了布局。

private var video:VideoPanel = new VideoPanel;
video.PlayVideo();

我在音乐屏幕上进行了相当多的设置,当它被称为新课程时,我对视频屏幕的设置较少。我不确定这是否有所作为。

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

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

2 个答案:

答案 0 :(得分:0)

MusicPanel,Sprite或MovieClip的基类是什么?如果是Sprite,请更改为MovieClip并查看其功能。在AS3中,Sprites不是动态的,因此不能采用类中不固有的属性。

答案 1 :(得分:0)

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

FlashDevelop是否会跟踪某些隐藏文件中的错误?我猜测那是怎么回事,并且确实存在一个错误。

PITA! - 但至少它现在有用了。