0

Edit02:闪存崩溃的原因是因为错误的距离导致程序将某些内容除以 0 - 我自己发现了错误,但我的问题仍然是,是否有类似崩溃报告的东西可以添加/编辑?

编辑:我发现脚本中的错误位于此处

          if(baseVerticies[vertX]-boneObj.x < 0){
                distance = distance*-1;
            }

在某一时刻它会产生错误的距离,但这不是程序导致崩溃的原因,我知道如何解决这个错误,但如何添加功能来检测闪存崩溃原因仍然很有趣

OLD:嘿,我目前正在测试 CS6 Flash 演示,但一个功能总是会杀死 Flash,而且我没有收到任何错误消息,所以我的问题是......我怎样才能找到这个错误?

我唯一知道的事情:当我调用某个函数(我在下面发布的那个)时它会崩溃 - 它不会在第一次调用时崩溃......更像是在第三次或第二次调用

有没有办法添加 debugEvents 或其他有助于跟踪错误的东西?

提前谢谢 =)

public function rotateBone(boneObj : Bone, point : Point){
            //rotates the boneGrafik
            boneObj.rotation = (point.x+boneObj.old_rotation)/2;

            if(axis == "horizontal"){
                var firstV : int = selected_bone*(squares+1)*2;
                var lastV : int = selected_bone*(squares+1)*2 + squares*2;
                var radius : Number = Math.sqrt((verticies[lastV]-verticies[firstV])*(verticies[lastV]-verticies[firstV])+
                    (verticies[lastV+1]-verticies[firstV+1])*(verticies[lastV+1]-verticies[firstV+1]));

                //will be exectued for every single vertex
                for(var s = 0; s<=squares; s++){
                    var vertX : int = selected_bone * (squares+1) * 2 + s*2;

                    var distance : Number = Math.sqrt((verticies[vertX]-boneObj.x)*(verticies[vertX]-boneObj.x)+
                        (verticies[vertX+1]-boneObj.y)*(verticies[vertX+1]-boneObj.y));

                    //calculates Vector
                    var rads:Number = boneObj.rotation / 180 * Math.PI;
                    var p:Point = new Point();
                    p.x=Math.cos(rads);
                    p.y=Math.sin(rads);

                    //baseMesh is used in order to check if the vertex pos is positiv / negative
                    if(baseVerticies[vertX]-boneObj.x < 0){
                        distance = distance*-1;
                    }

                    verticies[vertX] =  boneObj.x +  p.x * radius * (distance/radius);
                    verticies[vertX+1] =  boneObj.y +  p.y * radius * (distance/radius);

                }
            }else if (axis == "vertical"){
                for(var r = 0; r<=rows; r++){
                    vertX = r * (squares+1) * 2 + selected_bone * 2;

                }
            }
            updateMesh();
        }
4

1 回答 1

2

我不确定你的意思是什么,它毫无例外地崩溃。你是在浏览器中测试吗?如果是这样,那么您可以从此处的列表中下载并安装相应的 Flash 调试器播放器:http: //www.adobe.com/support/flashplayer/downloads.html

这应该会在 FlashPlayer 崩溃时为您提供一个错误窗口,其中将包含调试信息。它还将崩溃和调试数据写入日志文件。这里有更多信息:http: //helpx.adobe.com/flash-player/kb/configure-debugger-version-flash-player.html

最后,如果您想捕获和处理其他未处理的异常,您可以在 FP10.1 及更高版本中执行此操作。以下是有关它的 Adob​​e 文档:http: //help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/events/UncaughtErrorEvent.html,这是该页面的示例代码:

package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.UncaughtErrorEvent;
import flash.net.URLRequest;

public class LoaderUncaughtErrorEventExample extends Sprite
{
    private var ldr:Loader;

    public function LoaderUncaughtErrorEventExample()
    {
        ldr = new Loader();
        ldr.load(new URLRequest("child.swf"));
        ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
    }

    private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
    {
        if (event.error is Error)
        {
            var error:Error = event.error as Error;
            // do something with the error
        }
        else if (event.error is ErrorEvent)
        {
            var errorEvent:ErrorEvent = event.error as ErrorEvent;
            // do something with the error
        }
        else
        {
            // a non-Error, non-ErrorEvent type was thrown and uncaught
        }
    }
}
}
于 2012-08-24T07:24:19.917 回答