我有一个菜单系统,我在Flash中构建的,允许您选择一个项目,并将其上下移动。如果将对象从菜单中移除,我希望选择的项设置为null,因此不再尝试移动。
我有一个全局变量(对于当前的电影剪辑时间线):
var selectedPlaylistItem:MovieClip;存储选定的菜单项(菜单项只是电影剪辑),如果删除该菜单项,则将所选项目设置为null:
function removeFromPlaylist(sender:playlist_content_item) {
if(sender == selectedPlaylistItem) {
//Not sure why this isn't working, but at some point I need to figure it out.
selectedPlaylistItem = null;
trace(selectedPlaylistItem);该跟踪将在没有任何问题的情况下显示空,但在我的下一个将项向上移动的函数中,在将其设置为空之后,它仍然被设置为删除之前的对象:
function playlistUp(sender:MovieClip) {
trace(selectedPlaylistItem);该跟踪将显示原始对象。
有人知道为什么那行不通吗?为什么在设置成这样之后,它就不能保持为空呢?
谢谢
更新:
所以我试着看看我能不能弄清楚这是怎么回事
this.selectedPlaylistItem = null;
trace(selectedPlaylistItem);
setTimeout(function() {trace(selectedPlaylistItem);}, 4000);但是,当跟踪发生4秒后,它仍然是选定的对象,即使后面的跟踪显示为null,而且我在代码中到处查找,但是没有任何地方会被重置。
发布于 2009-05-12 21:30:04
据我所见,它应该是空的。您是否可以发布一些其他代码,即在什么环境下调用这两个函数?
发布于 2009-05-13 15:11:05
这个密码“住”在哪里?如果它位于时间线上,您的代码设置selectedPlaylistItem可能会再次被调用,无论如何,我会在您设置selectedPlaylistItem的位置添加一些跟踪或断点,以查看是否意外地被调用。
发布于 2009-05-16 19:45:05
您的代码是否恰好超过两帧或更多帧?我猜它又在运行代码了。所以在脚本的进程中,它将被设置为null,而当前的框架还没有呈现,但是如果它循环回(例如) frame 1,那么它可能会被调用一些代码来再次设置该变量,因此在4秒后会看到它被设置为某个值。
https://stackoverflow.com/questions/854897
复制相似问题