actionscript-3 - Flash AS3 多点触摸事件处理程序

标签 actionscript-3 flash multi-touch

我在一个帧中有 3 个独立的影片剪辑,每个剪辑都可以使用简单的触摸和拖动事件在舞台上移动,如下所示,以防它有一些相关性。我想将三个剪辑中的每一个拖动到第四个剪辑上,当所有 3 个剪辑都包含在第四个剪辑中时,我希望触发一个事件来更改当前帧。在 AS3 中执行此操作最简单的方法是什么?任何例子都会很棒,因为我是一个完全的初学者。谢谢

    Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

    Gem1_MC.addEventListener(TouchEvent.TOUCH_BEGIN, fl_TouchBeginHandler_2);
    Gem1_MC.addEventListener(TouchEvent.TOUCH_END, fl_TouchEndHandler_2);

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

    function fl_TouchBeginHandler_2(event:TouchEvent):void

{



 event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds_2);
    }

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

最佳答案

将来,您希望实现一个解决方案,将拖放功能抽象为一个类,但为了使用您所拥有的功能,这里有一个基本解决方案:

跟踪三个 MovieClips 何时被视为“包含在”第四个剪辑内

var contained:Array = new Array(false, false, false);

如果对象完成拖动,请检查它是否包含在 mc1 中。在这些检查结束时,看看它们是否都正确:

function fl_TouchEndHandler_2(event:TouchEvent):void {
    // Drag & drop stuff...
    contained[2] = Gem2_MC.hitTestObject(Gem4_MC)); // where Gem4_MC is your 4th movie clip.

    if (contained.indexOf(false) == -1) { // This returns -1 if it can't find false
        gotoAndStop(frame_number_you_want);
    }
}

顺便说一句,hitTestObject() 使用一个简单的“边界框”来检测“碰撞”。这意味着即使两个影片剪辑看起来并不真正接触,它也可能会将命中记录为真实。 Flash 中的像素完美碰撞检测是可能的,但更复杂,值得专门讨论。 A simple example of pixel perfect collision in AS3 can be found here .

关于actionscript-3 - Flash AS3 多点触摸事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964899/

相关文章:

java - 如何在 Libgdx 中跟踪多个触摸事件?

Javascript 注入(inject)以改进 Flash 的 SEO

actionscript-3 - 加载外部 vdo 时询问属性 onMetaData 的错误消息但是,vdo 仍然可以播放

javascript - 在 Opera 和 Chrome 中隐藏/显示 SWF 对象会重新启动 SWF

actionscript-3 - Haxe (Flash) 和内联

android - 用于处理的游戏 handle 控制 + 用于控制 Arduino 机器人的 Android

javascript - 当用户关闭浏览器时执行 Flex 清理功能

actionscript-3 - 共享对象位置

flash - 如何在 Actionscript 3 中按字母顺序比较两个字符串

android - 音池中的多点触摸