动作脚本 2 在匿名函数中使用局部变量

Posted

技术标签:

【中文标题】动作脚本 2 在匿名函数中使用局部变量【英文标题】:action script 2 use local variables inside anonymous function 【发布时间】:2017-10-30 21:12:41 【问题描述】:

我是动作脚本 2.0 的新手,我想要的是在匿名函数中使用局部变量

var count = 0;
var evtObject = new Object();
Key.addListener(evtObject);
evtObject.onkeypress = function()

  if(Key.UP == Key.getCode())
  
    // here i want to use the count value., count++;
    trace(count);
  

在 if 块中我想使用计数值。即使知道它不起作用,我在onkeypress的匿名函数中使用它,它显然向我展示了undefined。请帮我解决这个问题。

【问题讨论】:

“我是动作脚本 2.0 的新手” 开始花时间使用 ActionScript 3.0,它还会让您为其他类 C 语言做好准备(例如:Java、C#、Swift 等)...无论如何:if(Key.UP == Key.getCode()) 试图实现什么? Key.UP 是当一个键停止被按下(释放)时,那么Key.getCode() 会是等于吗?您在寻找“向上”箭头键吗? 【参考方案1】:

这里我给出了在函数中使用局部变量的简单例子,请参考这段代码..

 package 

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class keylister 

    var alldisplay:MovieClip;
    var left:uint = 37;
    var up:uint = 38;
    var right:uint = 39;
    var down:uint = 40;



    var pickUpsArray:Array = new Array();

    for (var i = 0; i < alldisplay.numChildren; i++ )
    
    if(alldisplay.getChildAt(i) is littleheart)
        
    pickUpsArray.push(alldisplay.getChildAt(i));
          
     




    public function keylister(Display:MovieClip) 
    
        alldisplay = new MovieClip();
        alldisplay = Display;
        alldisplay.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
        alldisplay.addEventListener(Event.ENTER_FRAME, PickUpItems);


    


    public function keyDownListener(e:KeyboardEvent):void
    


        if (e.keyCode == 37)
        
            alldisplay.box_mc.x-=10;
        
        if (e.keyCode == 38)
        
            alldisplay.box_mc.y-=10;

        
        if (e.keyCode == 39)
        
            alldisplay.box_mc.x+=10;

        
        if (e.keyCode == 40)
        
            alldisplay.box_mc.y+=10;

        
    

    public function PickUpItems(e:Event):void
    
        for (var j = 0; j < pickUpsArray.length; j++ )
        
            if (alldisplay.box_mc.hitTestObject(pickUpsArray[j]))
            
                alldisplay.removeChild(pickUpsArray[j]);
            
        
       


    

    

【讨论】:

这看起来像 AS3 代码。提问者正在使用 AS2。此外,is littleheart 之类的东西在测试时也会导致像 "Undefined..." 这样的错误。最好修复 Asker 自己提供的示例代码。

以上是关于动作脚本 2 在匿名函数中使用局部变量的主要内容,如果未能解决你的问题,请参考以下文章

python函数(全局变量,局部变量,作用域,递归函数,高阶函数,匿名函数)

Python函数:全局变量和局部变量匿名函数lambda递归函数

python局部变量高级函数匿名函数嵌套函数装饰器

匿名函数和闭包

局部变量作用域匿名函数

内置函数及匿名函数