添加了儿童但没有在Flash中显示的对象

时间:2011-05-11 17:05:15

标签: flash oop actionscript

我正在从xml动态添加一系列对象到我的flash影片,但是当我运行影片时它们不会出现。我有几乎相同的代码在不同的swf中添加对象,工作得很好。我已经从星期日测试了这8种方法,包括确保将它们添加到主要MovieClip(测试显示列表)的子容器中,将它们添加到舞台(有ADDED_TO_STAGE的监听器)并且它们的位置是正确(显示x,y值并将它们与mouseX& mouseY值进行比较)。它们位于显示列表中的正确位置。仍然没有对象。该类正确链接,我在库中有影片剪辑。

任何可能导致问题的想法? 我觉得我已经检查了一切。

'公共类MiniMap扩展了MovieClip     {

    private var expLoader:LoadXML = new LoadXML("Experiences.xml",true);
    public var expList:XMLList;
    private var popCont:Sprite = new Sprite();
    private var pop:PopUp;
    private var expCont:Sprite = new Sprite();
    private var pnt:Point;
    private var exp:Experiences;


    public function MiniMap()
    {
        // requires mouseup mousedown (pan) and close functions
        //must load experiences which will have their own class
        popCont.name = "popCont";
        expCont.name = "expCont";
        expCont.x = 0;
        expCont.y = 0;
        expCont.visible = true;
        expCont.width = 4000;
        expCont.height = 3000;
        mm.addEventListener(MouseEvent.MOUSE_DOWN, panMap, false, 0, true);
        expLoader.addEventListener("xmlLoaded", onLoadexp);
        mm.addChild(popCont);
        mm.addChildAt(expCont, 2);
    }
    private function onLoadexp(e:Event):void
    {



        expList = new XMLList(expLoader.xml.*);
        trace(expList.Longitude[1]);

        for (var i:int = 0; i < 3; i++)
        {
            exp = new Experiences(expList.Description[i],expList.Experience_Name[i]);
            exp.x = i * 0.5 + 1156;
            exp.y = i*0.75 + 1651;
            exp.name = expList.Experience_ID[i];

            /*exp.x = 1284.3216 * expList.Longitude[i] + 101472.0151;
            exp.y = -1744.6503 * expList.Latitude[i] + 80213.7461;*/

            exp.titl = expList.Experience_Name[i];
            exp.desc = expList.Description[i];

            exp.phourl = expList.photo[i];
            exp.type = expList.County[i];

            switch (exp.type)
            {
                case "City of Kawartha Lakes" :
                    exp.gotoAndPlay("Yellow");
                    break;
                case "Peterborough County" :
                    exp.gotoAndPlay("Green");
                    break;
                case "Northumberland County" :
                    exp.gotoAndPlay("Blue");
                    break;
                case "Northumberland" :
                    exp.gotoAndPlay("Red");
                    break;
            }
            exp.addEventListener(MouseEvent.CLICK, onExpClick, false,0, true);
            exp.addEventListener(Event.ADDED_TO_STAGE, onAdded, false,0, true);

            expCont.addChild(exp);

        }

        trace(expCont.root);

    }



    private function onExpClick(m:MouseEvent):void
    {

        //check for other popups 
        if (popCont.numChildren > 0)
        {
            closePop();
        }

        pop = new PopUp(m.target.titl,m.target.desc);
        pop.closer.addEventListener(MouseEvent.CLICK, closePop);
        mm.popCont.addChild(pop);


    }

    private function onAdded(e:Event):void
    {

        trace(e.target.name + " was added to the stage at "+e.target.x + ", " + e.target.y);


    }

    private function closePop():void {
        mm.popCont.removeChildAt(0);
    }

    private function panMap(m:MouseEvent):void
    {
        //click and drag to pan the minimap
        mm.startDrag();
        trace(mouseX+", "+mouseY);
        mm.addEventListener(MouseEvent.MOUSE_UP, relsMap, false, 0, true);
    }

    private function relsMap(m:MouseEvent):void
    {
        //drops the minimap
        mm.stopDrag();

    }'

3 个答案:

答案 0 :(得分:2)

对象加载到闪存后,您是否使用过addchild()命令?您需要将对象添加到显示列表中以便在舞台上显示(假设您在AS3中编码)

http://forums.creativecow.net/thread/190/864240

答案 1 :(得分:1)

看起来这是你的问题

exp.x = i * 0.5 + 1156;
exp.y = i*0.75 + 1651;

我不知道你的瑞士法郎的大小,但我怀疑它能处理这些数字。

答案 2 :(得分:0)

老实说,除非你发布一些代码,否则在这方面没什么可做的。

我会这样说:如果我遇到了一些事情要发生的事情,而不是,你必须非常有条不紊地追溯你的逻辑链。如果您的对象没有出现在舞台上,那么可能会出现各种各样的事物。 一个简短(不完整)的清单:

XML - 是否正在检索和解析数据?追踪vars。 - 如果您依赖库中的对象,请确保它们的链接名称都正确,并且您的路径正确。 显示列表 - 显然,addChild是必不可少的,但您的显示列表顺序是什么?有什么东西掩盖了你的物体吗? 对象道具 - 最后,确保“缩放”,“可见性”等属性都设置正确。

如果没有做到这一点,请将您的序列从项目中删除,并使用最少数量的变量测试逻辑。如果测试用例工作正常,那么改变bug搜索的范围......

祝你好运