【问题标题】:EventDispatcher and Function IssuesEventDispatcher 和函数问题
【发布时间】:2013-11-14 15:15:33
【问题描述】:

我对 AS3 非常陌生,我正在尝试制作一个简单的 Flash 游戏原型。现在,我想做的就是让 flash 告诉我它实际上是在接收用户的键输入,但我遇到了以下两个问题:

  1. 在向舞台添加事件侦听器的行中,我收到 Error1061: Call to Possibly Undefined method addEventListener through an reference with static type Class。

    • 我的研究使我相信这是因为我的 Backlayer 类没有扩展 EventDispatcher,但我无法扩展它,因为 Backlayer 必须扩展 MovieClip
  2. 在这些相同的行中,我试图告诉代码,当发生此类事件时,执行命名函数,但我收到一个 error1120,告诉我两者都是未定义的属性。

    • 我认为这可能是因为该类尚未扩展事件调度程序?

我对 AS3 的理解完全是自学的,我仍在努力学习该语言的礼仪,所以如果这是一个非常简单的问题,我深表歉意,但我无法通过谷歌搜索找到答案那行得通。 这是我的代码:

package  {

import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Stage;
import flash.events.EventDispatcher;
public class Backlayer extends MovieClip
{
Stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
Stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);

public function keyDownHandler(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT)
{
    trace("left pressed");
}

else if(e.keyCode == Keyboard.RIGHT)
{
    trace("right pressed");
}

else if(e.keyCode == Keyboard.UP)
{
    trace("up pressed");
}

else if(e.keyCode == Keyboard.DOWN)
{
    trace("down pressed");
}

}
public function keyUpHandler(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.LEFT)
{
    trace("left released");
}

else if(e.keyCode == Keyboard.RIGHT)
{
    trace("right released");
}

else if(e.keyCode == Keyboard.UP)
{
    trace("up released");
}

else if(e.keyCode == Keyboard.DOWN)
{
    trace("down released");
}

}
}
}

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    MovieClip 确实继承自 EventDispatcher,因此您的类也应该如此。 见:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html

    以下行有两个问题:

    Stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
    Stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
    

    1) 它们不在函数体中。

    2) Stage.addEventListener 表示您正在尝试调用 Stage 类的静态函数。应该写成stage.addEventListener(调用存储在属性stage中的Stage类实例的函数)。

    【讨论】:

    • 谢谢你,这让我很感动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2012-05-12
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多