【问题标题】:How do I implement TouchScroll AS3 within Boundaries如何在边界内实现 TouchScroll AS3
【发布时间】:2014-03-08 16:20:26
【问题描述】:

我在 Flash、AS3 中工作,并且我正在尝试使用滚动功能,其中我有一个在特定边界集(即 400 x 800)内的电影剪辑。影片剪辑是 400 x 1200,但我想知道是否有办法让影片剪辑在边界内滚动。我正在发布到 android 手机,所以它需要触摸滚动。任何答案将不胜感激。

【问题讨论】:

  • 设置父容器的最大尺寸为800

标签: android actionscript-3 flash


【解决方案1】:

你有两个选择:

第一个选项。你应该把你的可拖动影片剪辑放在蒙版下,并通过startTouchDrag方法拖动它,不要忘记传递触摸标识符,不要锁定到中心,并计算右边界,所以它看起来像:

function onTouchBegin(e:TouchEvent) {
    e.target.startTouchDrag(e.touchPointID, false, myBoundsRectangle); 
}    

第二个选项。不要使用掩码,而是使用scrollRect。您将需要更多的计算,因为您需要从TouchEvent.TOUCH_BEGIN 注册起点,并相应地从TOUCH_MOVE 事件中偏移您的scrollRect。但是您将拥有更多控制权,并且您将能够创建缓动动画。

【讨论】:

  • 感谢您的回答,这是我目前所拥有的:ChestBiceps.addEventListener(MouseEvent.MOUSE_DOWN, ClipDraggedOn); var boundsRect:Rectangle = new Rectangle(ChestBiceps.x, -100, 0, 1000);函数 ClipDraggedOn(event:MouseEvent):void { ChestBiceps.startDrag(false, boundsRect); stage.addEventListener(MouseEvent.MOUSE_UP, ClipDraggedOff); } 函数 ClipDraggedOff(event:MouseEvent):void { ChestBiceps.stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_UP, ClipDraggedOff); }
  • 不幸的是,boundsRect 似乎并没有限制影片剪辑,我仍然可以将影片剪辑拖离舞台。我需要定位boundsRect吗?
  • 如果你能把它拖出屏幕,因为你定义了这样的界限。例如,如果您定义 new Rectangle(biceps.x, biceps.y, 0, 100) - 您将只能从当前位置沿 y 轴拖动 biceps,最大为 100 像素。
  • 好的,我现在有了 - var boundsRect:Rectangle = new Rectangle(ChestBiceps.x, ChestBiceps.y, 0, -300);但是当我向上拖动影片剪辑时,它不会在容器内滚动它只是向上滚动离开屏幕,它不会在参数内滚动,类似于使用 scrollBar 组件的方式
  • 如果你想将它限制在某个容器内,不要使用像300这样的幻数,计算必要的最大y偏移量。对于您的问题,如果您的 movieClip 是某个容器的子级,则边界框将为 new Rectangle(0,0,0, 1200-800)
猜你喜欢
  • 1970-01-01
  • 2023-02-22
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
相关资源
最近更新 更多