部分感谢来自这里的人们提供的信息,我对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。
答案 0 :(得分:0)
MusicPanel,Sprite或MovieClip的基类是什么?如果是Sprite,请更改为MovieClip并查看其功能。在AS3中,Sprites不是动态的,因此不能采用类中不固有的属性。
答案 1 :(得分:0)
问题似乎来自Actionscript 3或来自FlashDevelop。我构建了一个新模块(SongsPanel),它与原始的MusicPanel非常接近。有用。如果我在MusicPanel中添加一个公共函数,编译器会返回相同的错误。如果我在SongsPanel中添加一个公共函数,一切正常。
FlashDevelop是否会跟踪某些隐藏文件中的错误?我猜测那是怎么回事,并且确实存在一个错误。
PITA! - 但至少它现在有用了。