我正在从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();
}'
答案 0 :(得分:2)
对象加载到闪存后,您是否使用过addchild()
命令?您需要将对象添加到显示列表中以便在舞台上显示(假设您在AS3中编码)
答案 1 :(得分:1)
看起来这是你的问题
exp.x = i * 0.5 + 1156;
exp.y = i*0.75 + 1651;
我不知道你的瑞士法郎的大小,但我怀疑它能处理这些数字。
答案 2 :(得分:0)
老实说,除非你发布一些代码,否则在这方面没什么可做的。
我会这样说:如果我遇到了一些事情要发生的事情,而不是,你必须非常有条不紊地追溯你的逻辑链。如果您的对象没有出现在舞台上,那么可能会出现各种各样的事物。 一个简短(不完整)的清单:
XML - 是否正在检索和解析数据?追踪vars。 库 - 如果您依赖库中的对象,请确保它们的链接名称都正确,并且您的路径正确。 显示列表 - 显然,addChild是必不可少的,但您的显示列表顺序是什么?有什么东西掩盖了你的物体吗? 对象道具 - 最后,确保“缩放”,“可见性”等属性都设置正确。
如果没有做到这一点,请将您的序列从项目中删除,并使用最少数量的变量测试逻辑。如果测试用例工作正常,那么改变bug搜索的范围......
祝你好运