AS3 - Bitmap类可以调度鼠标事件吗?

时间:2013-05-14 14:39:15

标签: actionscript-3 flex flashdevelop

我正在尝试学习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");
    }

}

}

这两个类几乎完全相同,只是一个是Sprite我嵌入了一个来自教程的swf文件的符号,另一个是Bitmap我在其中嵌入了一个png文件。

当我运行项目并点击播放器图像时,Player类(精灵和使用符号的类)会触发MouseEvent.CLICK,但Enemy类会不

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

如何让Bitmap班级回复MouseEvent

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

来自ActionScript® 3.0 Reference for the Adobe® Flash® Platform

  

Bitmap类不是InteractiveObject类的子类,所以   它不能发送鼠标事件。但是,你可以使用   显示对象容器的addEventListener()方法   包含Bitmap对象。

答案 1 :(得分:2)

不幸的是Bitmap类不会调度您必须将它包装在Sprite类中的鼠标事件。