as3正在加载外部swf文件

时间:2019-03-10 05:30:22

标签: actionscript-3 swfloader displaylist

我认为当我调用treeGroup符号时可能会出现问题。 AS3不会将其添加到显示列表吗?我得到了从Adobe加载外部SWF文件的代码。他们确实有不止一种方法,所以我可能使用了错误的方法。加载的外部文件将引发您在屏幕快照中看到的错误。代码也在那里。该文件运行正常,没有错误,当我在另一个文件中加载swf时,列出了错误。我还可以查看并更改已加载影片的X和Y位置,但该影片未运行。因此它已加载,但在我看来,添加到显示列表可能会出现问题,或者可能会导致我使用MovieClip(root)导致原因,因为第12行是我第一次使用此功能的地方。我必须这样做,因为我需要使用setChildIndex。如果有其他方法,那么我无法从库中调用该符号,应该没问题。

主电影是游戏的主菜单。我要加载的另一个文件是我正在制作的此高尔夫游戏的第一个孔。

这是adobe的链接,我使用了它们列出的第一种方法。 https://helpx.adobe.com/flash/kb/load-external-swf-swf.html

如果您需要更多信息,我可以提供两个SWF文件的所有代码。

错误代码为ArgumentError:错误#2005:参数0的类型错误。应为BitmapData类型。     在flash.display :: BitmapData / hitTest()     在Hole1_fla :: Symbol2_1 / treeDetect()[Hole1_fla.Symbol2_1 :: frame1:12]

这就是我加载SWF文件的方式。

var myLoader:Loader = new Loader();                     // create a new instance of the Loader class
var url:URLRequest = new URLRequest("Hole1.swf"); // in this case both SWFs are in the same folder 
myLoader.load(url);  

我认为符号中的代码就是问题。

    var tree1:treeGroup = new treeGroup();
addChild(tree1);
setChildIndex(tree1,15);
var tree1Rect:Rectangle = tree1.getBounds(this);
var tree1ClipBmpData = new BitmapData(tree1Rect.width, tree1Rect.height, true, 0);
tree1ClipBmpData.draw(tree1);

addEventListener(Event.ENTER_FRAME,treeDetect);

function treeDetect(event:Event) {
    // code for trees to detect if we hit some trees
    if (tree1ClipBmpData.hitTest(new Point(tree1.x, tree1.y),255,MovieClip(root).ballClipBmpData,new Point(MovieClip(root).backhole1.golfball.x, MovieClip(root).backhole1.golfball.y),255)) { // this is line 12 poping the error in the symbol that is in the swf im loading in.
        if (MovieClip(root).backhole1.golfball.scaleX == .1 && MovieClip(root).backhole1.golfball.scaleY == .1) {
            setChildIndex(tree1,17);
            if (MovieClip(root).backhole1.golfball.scaleX >= .3 && MovieClip(root).backhole1.golfball.scaleY >= .3) {
                MovieClip(root).friction = .05;
            }
        }
        if (MovieClip(root).backhole1.golfball.scaleX <= .3 && MovieClip(root).backhole1.golfball.scaleY <= .3) {
            if (MovieClip(root).goingDown == 1) {
                MovieClip(root).friction = .08;
                setChildIndex(tree1,17);
                MovieClip(root).backhole1.golfball.scaleX = .1;
                MovieClip(root).backhole1.golfball.scaleY = .1;
                MovieClip(root).goingDown = 0;
            }
        }
    } else {
        setChildIndex(tree1,15);

    }
}

hitTest中第一个MovieClip(root)所在的位置是第12行,它弹出错误消息,并且每帧都在发生。

0 个答案:

没有答案