【发布时间】:2014-08-17 06:54:18
【问题描述】:
我创建了一个自定义 Sprite 对象,它不调度 MouseEvent.MOUSE_DOWN 或 MouseEvent.MOUSE_UP 事件。它正在正确调度 MouseEvent.MOUSE_MOVE 事件。
所有事件监听器都经过验证注册。
如果这是一个常见或过于简单的问题,我深表歉意,但我花了最后一个小时在 Google 上搜索和阅读 StackOverflow 以寻找适合我情况的问题或答案,但根本没有找到。据我所知,Sprite 是一个 InteractiveObject,因此应该调度所有这三个事件,而不仅仅是 MouseEvent.MOUSE_MOVE 事件。
类声明:
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class CustomSprite extends Sprite {
main.as 中的对象初始化
var circle:CustomSprite = new CustomSprite();
circle.graphics.lineStyle(3,0x00FF00);
circle.graphics.beginFill(0x0000FF,.5);
circle.graphics.drawCircle(0,0,50);
circle.graphics.endFill();
circle.x = 100;
circle.y = 100;
在构造函数中注册事件监听器:
addEventListener(MouseEvent.MOUSE_DOWN,mouseDownListener);
if (hasEventListener(MouseEvent.MOUSE_DOWN)) trace("MOUSE_DOWN listener exists");
addEventListener(MouseEvent.MOUSE_UP,mouseUpListener);
if (hasEventListener(MouseEvent.MOUSE_UP)) trace("MOUSE_UP listener exists");
addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveListener);
if (hasEventListener(MouseEvent.MOUSE_MOVE)) trace("MOUSE_MOVE listener exists");
事件监听器注册输出:
MOUSE_DOWN listener exists
MOUSE_UP listener exists
MOUSE_MOVE listener exists
作为 CustomSprite 类一部分的侦听器函数:
private function mouseDownListener(e:MouseEvent):void {
trace("mouseDownListener");
}
private function mouseUpListener(e:MouseEvent):void {
trace("mouseUpListener");
}
private function mouseMoveListener(e:MouseEvent):void {
trace("mouseMoveListener");
}
将鼠标悬停在对象上并单击几次后的输出:
mouseMoveListener
mouseMoveListener
mouseMoveListener
mouseMoveListener
提前感谢您提供的任何帮助 - 非常感谢!
【问题讨论】:
-
可以添加更多上下文吗?
-
我在main.as中添加了对象的初始化方式。还有什么其他上下文会有所帮助?
-
你能提供更多关于精灵类本身的细节吗?你的实施?您的 CustomSprite 可能会导致“mouseDown”和“mouseUp”侦听器出现问题。
-
这正是您添加事件侦听器的方式吗?确切地?没有
-
看看我发布的内容,如果你已经这样做了,我会删除它。
标签: actionscript-3 events