我正在尝试学习AS3并遇到了一个小问题。
我有一个Bitmap类,我添加了一个MouseEvent.CLICK
侦听器,但似乎没有调度该事件。
我使用Flashdevelop编写AS3代码,使用Flex编译。
我有两个课程,Enemy.as
和Player.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
?
感谢您的帮助!
答案 0 :(得分:6)
来自ActionScript® 3.0 Reference for the Adobe® Flash® Platform:
Bitmap类不是InteractiveObject类的子类,所以 它不能发送鼠标事件。但是,你可以使用 显示对象容器的addEventListener()方法 包含Bitmap对象。
答案 1 :(得分:2)
不幸的是Bitmap
类不会调度您必须将它包装在Sprite
类中的鼠标事件。