Actionscript 3 android和iphone as3的可拖动菜单

Actionscript 3 android和iphone as3的可拖动菜单,actionscript-3,menu,air,scroll,Actionscript 3,Menu,Air,Scroll,我想做一个像instragram和其他应用程序一样的可拖动菜单 我试着做一个可分级的球,它沿着我的手指/鼠标在x轴上移动,然后可以扔到舞台上。然而,它在我的android上不起作用,我不明白它是纯数学的,应该能起作用。我试着推掉任何值,但没有成功 有什么建议说明它为什么不起作用吗? 多谢各位 package { import flash.display.Sprite; import flash.events.MouseEvent; im

我想做一个像instragram和其他应用程序一样的可拖动菜单 我试着做一个可分级的球,它沿着我的手指/鼠标在x轴上移动,然后可以扔到舞台上。然而,它在我的android上不起作用,我不明白它是纯数学的,应该能起作用。我试着推掉任何值,但没有成功 有什么建议说明它为什么不起作用吗? 多谢各位

 package 
    {
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.geom.Rectangle;
        import flash.utils.Timer;
        import flash.geom.Point;
        /**
         * ...
         * @author 
         */
        public class GravityCoinsMain extends Sprite 
        {
            private var theCoin:Coin;
            private var deltaX:Number = 0;
            private var prevX:Number = 0;
            private var newX:Number = 0;
            private var PCControl:Boolean = true;
            private var speedLimit:Number = 15;     
            private var timer:Timer = new Timer(10);
            private var dragFactor:Number = 0.97;   

            private function update(te:TimerEvent):void
            {
                if (PCControl)
                {
                    if (theCoin.x > 0 && (theCoin.x < stage.stageWidth))
                    {
                        theCoin.x += deltaX;
                        deltaX *= dragFactor;
                    }
                }
                else
                {
                    prevX = newX;
                    newX = theCoin.x;
                    deltaX = newX - prevX;
                    var speed:Number =  deltaX ;

                    if ( speed > speedLimit )
                    {
                        deltaX *= speedLimit / speed;
                    }
                }
            }

            private function beginDrag(me:MouseEvent):void
            {
                theCoin.startDrag(false, new Rectangle(0,theCoin.y,5000,0));
                PCControl = false;
                timer.start();
            }

            private function endDrag(me:MouseEvent):void
            {
                theCoin.stopDrag();
                PCControl = true;
            }

            public function GravityCoinsMain()
            {



                theCoin = new Coin();
                addChild(theCoin);
                theCoin.x = stage.stageWidth / 2;
                theCoin.y = stage.stageHeight / 2;
                theCoin.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag);
                theCoin.addEventListener(MouseEvent.MOUSE_UP, endDrag);

                timer.addEventListener(TimerEvent.TIMER, update);

            }
        }

    }
包
{
导入flash.display.Sprite;
导入flash.events.MouseEvent;
导入flash.events.TimerEvent;
导入flash.geom.Rectangle;
导入flash.utils.Timer;
导入flash.geom.Point;
/**
* ...
*@作者
*/
公共类GravityCoinsMain扩展了Sprite
{
私有货币:硬币;
私人增值税:数字=0;
private var prevX:Number=0;
私有变量newX:Number=0;
专用var PCControl:布尔值=真;
私人var速度限制:数字=15;
专用var定时器:定时器=新定时器(10);
私有变量dragFactor:Number=0.97;
私有函数更新(te:TimerEvent):无效
{
如果(PCControl)
{
如果(角x>0&(角x速度限制)
{
deltaX*=速度限制/速度;
}
}
}
私有函数beginDrag(me:MouseEvent):void
{
圆起始点(假,新矩形(0,圆y,5000,0));
PCControl=false;
timer.start();
}
私有函数endDrag(me:MouseEvent):void
{
coin.stopDrag();
PCControl=true;
}
公共职能部门
{
硬币=新硬币();
addChild(theCoin);
coin.x=stage.stageWidth/2;
coin.y=stage.stageHeight/2;
添加的列表项(MouseEvent.MOUSE_DOWN,beginDrag);
coin.addEventListener(MouseEvent.MOUSE\u UP,endDrag);
timer.addEventListener(TimerEvent.timer,更新);
}
}
}

我建议查看Greensock的ThrowProps插件。它不是免费提供的,但它允许基于速度和摩擦力的运动。今年早些时候,我用它创建了自己的滚动条,它实际上比Flex滚动条感觉更好。你应该能够使用它来达到这个目的(或者至少是它的原理和示例代码),谢谢你,这些家伙想为他们的课程做很多事情,但是看看我的示例,它在桌面上工作很好,为什么不在我的手机上呢?是的,插件很昂贵。但是图书馆是最好的图书馆之一。至少看一下滚动条的示例代码。也就是说,我看到的唯一不合适的地方(除了一些糟糕的类结构)是
鼠标向上
侦听器应该连接到舞台上,而不是硬币,并添加到
鼠标向下
处理程序中。我想我发现了问题,似乎手机比桌面更快(我知道这听起来很奇怪…)但是我会把计时器的延迟时间从10改为50,效果会很好。我真的不知道为什么,但就是这样!请看我的答案和评论。