如何在函数内增加全局变量?

时间:2010-10-31 06:46:12

标签: flex flash actionscript-3

变量currentIndex是全局声明的,并使用某个值“0”进行初始化。如何保存每次调用函数时递增的currentIndex的值?在给定的代码中,每次调用函数时,都会重新初始化该值。

function nextSong(e:Event):void 
{
        sc.stop();

 currentIndex = currentIndex + 1;

 var nextSongFunc:URLRequest = new URLRequest(songlist[currentIndex].file);
 var nextTitle:Sound = new Sound();
 nextTitle.load(nextSongFunc);
 currentSound = nextTitle;
 sc = currentSound.play();

 sc.addEventListener(Event.SOUND_COMPLETE, nextSong);
}

NextBtn.addEventListener(MouseEvent.CLICK, nextSong);

2 个答案:

答案 0 :(得分:1)

您需要声明变量之外的函数。如何执行此操作取决于上下文。这个函数在哪里被定义?在Flash中时间轴上的“操作窗口”中?或者在Flex中的<script>块内?或其他地方?

看起来你在Flash工具中,在动作窗口中。如果是这样,那就这样做:

var currentIndex:int = 0;

function nextSong(e:Event):void {
  sc.stop();
  currentIndex = currentIndex + 1;

  var nextSongFunc:URLRequest = new URLRequest(songlist[currentIndex].file); 
  var nextTitle:Sound = new Sound(); 
  nextTitle.load(nextSongFunc); 
  currentSound = nextTitle; 
  sc = currentSound.play();

  sc.addEventListener(Event.SOUND_COMPLETE, nextSong); 
}

NextBtn.addEventListener(MouseEvent.CLICK, nextSong);

如果这不起作用,请告诉我更多细节,我们会对其进行整理。

答案 1 :(得分:0)

如果您使用的是Flash CS,则应该利用DocumentClass。在这种情况下,您可以将currentIndex定义为私有变量,它将在您的函数中递增/递减。

这比在“动作”面板中编写代码要好得多,允许更大的灵活性,并且不会因框架相关代码而遇到问题。