4

我正在尝试学习 AS3,但遇到了一个小问题。

我有一个 Bitmap 类,我向其中添加了一个MouseEvent.CLICK侦听器,但似乎没有调度该事件。

我使用 Flashdevelop 编写 AS3 代码并使用 Flex 进行编译。

我有两个班,Enemy.asPlayer.as

Player.as看起来像这样:

package Player 
{
import flash.display.Sprite;
import flash.events.MouseEvent;

[Embed(source="../../assets/leek.swf", symbol="Leek")]

public class Player extends Sprite 
{
    public function Player() 
    {
        trace("Player constructed");
        addEventListener(MouseEvent.CLICK, handleClick);
    }

    private function handleClick(e:MouseEvent):void 
    {
        trace("Clicked Player");
    }

}

}

Enemy.as看起来像这样:

package enemies 
{

import flash.display.Bitmap;
import flash.events.MouseEvent

[Embed(source="../../assets/gardengnome.png")]

public class Enemy extends Bitmap 
{
    public function Enemy() 
    {
        trace("enemy constructed");
        addEventListener(MouseEvent.CLICK, handleClick);
    }

    private function handleClick(e:MouseEvent):void 
    {
        trace("Clicked Enemy");
    }

}

}

这两个类几乎相同,除了一个是 a ,我从教程中获得Sprite的文件中嵌入了一个符号,另一个是 a,我在其中嵌入了一个文件。swfBitmappng

当我运行项目并单击播放器图像时,Player该类(一个精灵并使用符号)触发,但该类没有。MouseEvent.CLICKEnemy

没有编译警告或错误,所以我很难理解到底是什么问题。是因为一个是 aSprite而另一个是 a Bitmap,还是因为一个使用了 a 中准备好的符号swf,而另一个只是 a png

我怎样才能让Bitmap班级回应MouseEvent

谢谢你的帮助!

4

2 回答 2

7

来自Adob​​e® Flash® 平台的 ActionScript® 3.0 参考

Bitmap 类不是 InteractiveObject 类的子类,因此它不能调度鼠标事件。但是,您可以使用包含 Bitmap 对象的显示对象容器的 addEventListener() 方法。

于 2013-05-14T14:44:59.773 回答
3

Unfortunately Bitmap class doesn't dispatch mouse events you will have to wrap it inside a Sprite class.

于 2013-05-14T14:41:17.123 回答