0

一般来说,我对使用动作脚本真的很陌生,可以很好地解释如何做到这一点以及它是如何工作的。

我正在尝试在 AS3 for Android 中创建舞台活动。

当用户触摸舞台而不是特别是对象时,我需要检测他们是否正在拖动以及手指拖动到的位置。

我已经开始这样检测他们是否触及了舞台:

stage.addEventListener(TouchEvent.TOUCH_BEGIN, stageTouchBegin); 

var stageTouchDragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);

function stageTouchBegin(event:TouchEvent):void
{
event.target.startTouchDrag(event.touchPointID, false, stageTouchDragBounds:Rectangle);
trace(event.stageX);
trace(event.stageY);
}

这条线是我得到错误的地方,我假设这是因为目标通常会引用电影符号或其他东西,但在这种情况下,这不是因为它是舞台。我尝试用舞台替换目标,但没有奏效:

event.target.startTouchDrag(event.touchPointID, false, stageTouchDragBounds:Rectangle);

这是错误:1061:通过静态类型 flash.events:TouchEvent 的引用调用可能未定义的方法 startTouchDrag。


从那里我的计划是继续使用这样的东西来开始记录他们所在的位置:

var curPosX; var curPosY;

function stageTouchMoveHandler(event:TouchEvent):void
{   
trace(event.stageX);
this.curPosX = event.stageX;
trace(event.stageY);
this.curPosY = event.stageY;
}

然后像这样处理结尾:

function stageTouchEndHandler(event:TouchEvent):void
{
event.target.stopTouchDrag(event.touchPointID);
}

任何有关如何执行此操作的见解/建议或对目标的解释,尤其是示例代码,将不胜感激。感谢您的时间!

4

1 回答 1

0

在考虑了您要做什么之后,我认为您的问题的答案是不要调用该startTouchDrag()方法并按照您的计划进行。您所展示的是确定用户在何处开始/停止其“触摸移动”手势的正确方法。

尝试拖动是没有意义的stage……这stage实际上是您的 Flash 电影显示的舞台。它包含整个 Flash 应用程序,因此不能拖动。

重申我在上面的评论中所说的,startTouchDrag()是您在 Sprite(或扩展的某些对象Sprite)上调用的方法。当您想要在屏幕上拖动某些东西时使用此方法,例如在拖放操作中。

于 2013-06-01T03:30:53.173 回答