我在尝试重新定位使用Actionscript加载到movieclip的图像时遇到了大量问题。这就是我想要做的事情:
for (var i:int=0; i<roleHeadData[pNum].length; i++) {
var gap = (sWidth/(roleHeadData[pNum].length+1))*(i+1)-sWidth/2;
var roleBtn:roleBtn_mc = new roleBtn_mc();
roleBtn.name = "role"+roleHeadData[pNum][i].shortName+"_mc";
roleBtn.x = gap;
roleBtn.buttonMode = true;
rolePane.addChild(roleBtn);
var imgPath = roleHeadData[pNum][i].imgRef;
var roleImg = loadMovie(roleBtn.roleImg, imgPath);
rolePane.roleBtn = roleBtn;
roleBtn.text_txt.text = roleHeadData[pNum][i].title;
roleImg.x = -(roleImg.width/2);
roleFunc(roleBtn,i, isHome);
}
由于没有宽度,图像不会移动。我假设它是因为它尚未加载。出于这个原因,我尝试了装载机重新定位物品。这也不起作用,因为在加载图像时,使用的var不再可用,因此只有最后一个项目被重新定位:
for (var i:int=0; i<roleHeadData[pNum].length; i++) {
var gap = (sWidth/(roleHeadData[pNum].length+1))*(i+1)-sWidth/2;
var roleBtn:roleBtn_mc = new roleBtn_mc();
roleBtn.name = "role"+roleHeadData[pNum][i].shortName+"_mc";
roleBtn.x = gap;
roleBtn.buttonMode = true;
rolePane.addChild(roleBtn);
var imgPath = roleHeadData[pNum][i].imgRef;
var roleLoader:Loader;
roleLoader = new Loader();
roleLoader.load(new URLRequest(imgPath));
var roleImg = roleBtn.roleImg;
roleBtn.roleImg.addChild(roleLoader);
roleLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{roleLoaded(roleImg)});
function roleLoaded(mc):void {
// Load Image
mc.x = -(mc.width/2);
}
}
非常感谢任何帮助。
答案 0 :(得分:0)
您可以访问事件的currentTarget属性以获取要居中的Loader对象。
for (var i:int=0; i<roleHeadData[pNum].length; i++) {
var gap = (sWidth/(roleHeadData[pNum].length+1))*(i+1)-sWidth/2;
var roleBtn:roleBtn_mc = new roleBtn_mc();
roleBtn.name = "role"+roleHeadData[pNum][i].shortName+"_mc";
roleBtn.x = gap;
roleBtn.buttonMode = true;
rolePane.addChild(roleBtn);
var imgPath = roleHeadData[pNum][i].imgRef;
var roleLoader:Loader;
roleLoader = new Loader();
roleLoader.load(new URLRequest(imgPath));
var roleImg = roleBtn.roleImg;
roleBtn.roleImg.addChild(roleLoader);
roleLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, roleLoaded);
}
function roleLoaded(e:Event):void
{
var target_mc:Loader = e.currentTarget.loader as Loader;
target_mc.x = -(target_mc.width/2);
}
另外,请注意我是如何在循环之外移动函数声明的。在循环中声明函数是非常糟糕的做法。