添加了子对象,但未在Flash中显示
我正在从xml向flash电影动态添加一系列对象,但在运行电影时它们不会出现。我有几乎相同的代码在不同的swf中添加对象,效果很好。从周日开始,我已经测试了8种方法,包括确保它们被添加到主MovieClip的子容器中(测试了显示列表),它们被添加到stage(有一个用于added_to_stage的侦听器),并且它们的位置是正确的(显示x、y值,并将它们与mouseX和mouseY值进行比较)。它们在显示列表中的正确位置。仍然没有物体。该类链接正确,库中有电影剪辑 你知道是什么导致了这个问题吗? 我觉得我已经检查过了 “公共类小地图扩展了MovieClip” {添加了子对象,但未在Flash中显示,flash,oop,actionscript,Flash,Oop,Actionscript,我正在从xml向flash电影动态添加一系列对象,但在运行电影时它们不会出现。我有几乎相同的代码在不同的swf中添加对象,效果很好。从周日开始,我已经测试了8种方法,包括确保它们被添加到主MovieClip的子容器中(测试了显示列表),它们被添加到stage(有一个用于added_to_stage的侦听器),并且它们的位置是正确的(显示x、y值,并将它们与mouseX和mouseY值进行比较)。它们在显示列表中的正确位置。仍然没有物体。该类链接正确,库中有电影剪辑 你知道是什么导致了这个问题吗?
private-var-expLoader:LoadXML=new-LoadXML(“Experiences.xml”,true);
公共变量解释列表:XMLList;
private-var-popCont:Sprite=new-Sprite();
private-var-pop:弹出窗口;
private var expCont:Sprite=new Sprite();
私有var pnt:点;
私人经验;
公共功能小地图()
{
//需要mouseup mousedown(平移)和close功能
//必须加载有自己课程的体验
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);
}
私有函数onLoadexp(e:事件):void
{
expList=newXMLList(expLoader.xml.*);
跟踪(解释经度[1]);
对于(变量i:int=0;i<3;i++)
{
exp=新体验(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*解释经度[i]+101472.0151;
经验y=-1744.6503*解释纬度[i]+80213.7461*/
exp.titl=expList.Experience_Name[i];
exp.desc=expList.Description[i];
exp.phourl=expList.photo[i];
exp.type=expList.County[i];
开关(exp.type)
{
案例“卡瓦萨湖之城”:
exp.gotoAndPlay(“黄色”);
打破
“彼得伯勒县”案:
exp.gotoAndPlay(“绿色”);
打破
案例“诺森伯兰县”:
exp.gotoAndPlay(“蓝色”);
打破
“诺森伯兰”案:
exp.gotoAndPlay(“红色”);
打破
}
exp.addEventListener(MouseEvent.CLICK,onExpClick,false,0,true);
exp.addEventListener(Event.ADDED\u TO\u STAGE,onAdded,false,0,true);
expCont.addChild(exp);
}
跟踪(expCont.root);
}
私有函数onExpClick(m:MouseEvent):void
{
//检查其他弹出窗口
如果(popCont.numChildren>0)
{
closePop();
}
pop=新弹出窗口(m.target.titl、m.target.desc);
pop.closer.addEventListener(MouseEvent.CLICK,closePop);
mm.popCont.addChild(pop);
}
已添加的私有函数(e:事件):void
{
跟踪(e.target.name+”添加到“+e.target.x+”、“+e.target.y”的阶段中);
}
私有函数closePop():void{
mm.popCont.removeChildAt(0);
}
私有函数窗格映射(m:MouseeEvent):无效
{
//单击并拖动以平移小地图
mm.startDrag();
跟踪(mouseX+,“+mouseY);
mm.addEventListener(MouseEvent.MOUSE_UP,relsMap,false,0,true);
}
私有函数relsMap(m:MouseEvent):void
{
//放下小地图
mm.止动阻力();
}'
一旦对象加载到flash中,您是否使用了addchild()
命令?您需要将对象添加到显示列表中,以便在舞台上显示它们(假设您使用的是AS3编码)
一旦对象加载到flash中,您是否使用了
addchild()
命令?您需要将对象添加到显示列表中,以便在舞台上显示它们(假设您使用的是AS3编码)
老实说,除非您发布一些代码,否则在这方面没有什么可做的 我要说的是:如果我处在一种情况下,有些事情可能正在发生,有些事情没有发生,你只需要非常有条理地追溯逻辑链。如果你的对象没有出现在舞台上,那么可能会出现问题的事情的数量显然是有限的。 简短(且不完整)的检查表: XML-数据被正确检索和解析了吗?找出变量。 库-如果依赖库中的对象,请确保它们的链接名称都正确,并且路径正确。 显示列表-显然,addChild是必不可少的,但您的显示列表顺序是什么?是否有什么东西遮挡了您的对象? 对象道具-最后,确保“缩放”、“可见性”等属性设置正确 如果所有这些都失败了,请将您的序列从项目中移除,并使用最少数量的变量测试逻辑。如果您的测试用例工作正常,则更改bug查找的范围
祝你好运老实说,除非你发布一些代码,否则这方面没什么可做的 我要说的是:如果我处在一种情况下,某件事情可能正在发生,而不是正在发生,你只需要非常有条理地追溯逻辑链。如果你的对象没有出现在
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();
}'
exp.x = i * 0.5 + 1156;
exp.y = i*0.75 + 1651;