【问题标题】:action script 2 use local variables inside anonymous function动作脚本 2 在匿名函数中使用局部变量
【发布时间】: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() 会是等于吗?您在寻找“向上”箭头键吗?

标签: flash actionscript actionscript-2 anonymous-function


【解决方案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 自己提供的示例代码。
猜你喜欢
  • 2015-02-26
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 2016-05-28
  • 2014-08-20
  • 2014-03-13
相关资源
最近更新 更多