AS3只在一个方向上进行平移,并且仅在Adobe AIR中进行

时间:2016-08-03 02:44:26

标签: actionscript-3 air

enter image description here 我在每个帧上进行了几十次碰撞检测,以及当角色向左或向右移动时几十个对象平移(但仅在靠近屏幕边缘时)。它实际上在FlashPlayer21中发布时效果很好但是如果我使用Adobe AIR,它会变得非常慢。这只发生在角色向右并且背景向左移动时(因此"相机向右平移")。当角色离开时,它是超级流畅的。我在这里或那里使用几乎相同的代码,但不同的符号(+/-)除外。也许我不应该担心这个,或者我可能需要在我的iphone或平板电脑上进行测试,但是因为我不知道该怎么做但是...不是全部的Adobe有这些AIR用于桌面和内部iOS移动设备模拟器吗?

以下是相关代码:

    private function panScreen2(c:Runner,speedFac:Number,...depthSets):void{
        if (c == char){ // if the c:Runner object is the character in play
             // I use drivers to cause objects that can only be displayed on every 8th pixel to still recieve floating point number values for animation
            var cDepth: int = c._drives.parent.parent.getChildIndex(c._drives.parent);
            // "camera" pans to left as character goes left
            if (c.x <= 500 && c._drives._facingRight == false && c._speed !=0)
            {
                for (var i:int = depthSets.length-1; i >= 0; i--){
                    for (var j:int = depthSets[i].arr.length-1; j >= 0; j--){
                        var depthDif:int = -cDepth+depthSets[i].arr[j].parent.parent.getChildIndex(depthSets[i].arr[j].parent)
                        depthSets[i].arr[j].x -= (c._speed)*depthDif*depthSets[i].ratio-speedFac;
                    }
                }
            // "camera" pans to right as character goes right sending objects to left
            } else if (c.x >= 1000 && c._drives._facingRight == true && c._speed !=0)
            {
                for (var i:int = depthSets.length-1; i >= 0; i--){ 
                    for (var j:int = depthSets[i].arr.length-1; j >= 0; j--){
                        var depthDif:int = -cDepth+depthSets[i].arr[j].parent.parent.getChildIndex(depthSets[i].arr[j].parent)
                        depthSets[i].arr[j].x -= (c._speed)*depthDif*depthSets[i].ratio+speedFac;
                    }
                }
            } else
            {
                c.x += c._speed;                
            }
        }
    }

然后我像这样调用函数:

panScreen(c,{arr:allBlocks,ratio:1},{arr:allDepth,ratio:1},{arr:allBears,ratio:1});

depthSets是我在调用函数时传递的额外参数。它是一个由数组和比率组成的对象。此函数遍历数组(实际上是Vector,如果这很重要),并将所有内容向右或向左移动一个由角色的比率和速度决定的量。非常直接,再一次,它就像Flash Player 21中的魅力一样,当角色向左移动时,它可以像黄油一样顺畅地工作,它将所有对象作为一个相机发送到右边#34;泛。那么试图向右走的是什么呢?

0 个答案:

没有答案