【发布时间】:2013-06-01 00:26:59
【问题描述】:
总的来说,我对使用动作脚本很陌生,可以很好地解释如何执行此操作以及它是如何工作的。
我正在尝试在 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);
}
任何关于如何做到这一点的见解/建议或对目标的解释,尤其是示例代码,将不胜感激。感谢您的宝贵时间!
【问题讨论】:
-
也许你不清楚
startTouchDrag()方法应该做什么。它用于实际拖动对象,例如拖放操作。舞台不是您可以在屏幕上拖动的东西。您只能对属于或扩展Sprite类(舞台不是)的对象使用startTouchDrag()方法。我对触摸事件不是超级熟练,否则我会提供更多建议。但绝对不可能在舞台上使用startTouchDrag():) 尝试阅读here
标签: android actionscript-3 drag stage