这是我为使其工作而编写的代码,但它从一个点扩展它们,就好像它们都在一个大容器内,而不是每个容器在它自己的容器中#34; middleContainer"。我该如何解决这个问题?
谢谢!! :)
var thumbsContainer:MovieClip;
var thumb_Loader: Loader;
var thumb: Loader;
var middleContainer: MovieClip;
function createThumbs(): void {
thumbsContainer = new MovieClip();
stage.addChild(thumbsContainer);
for (var i: uint = 0; i < 5 ; i++) {
thumb_URL = VideoList[i].@THUMB_URL;
thumb_Loader = new Loader();
thumb_Loader.load(new URLRequest(Thumb_URL));
thumb_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, viewThumbs)
thumb_Loader.x = i * (thumbWidth + thumbSpacing);
}
}
function viewThumbs(e: Event): void {
thumb = e.target.loader;
middleContainer = new MovieClip();
middleContainer.addChild(thumb);
thumbsContainer.addChild(middleContainer);
thumb.x -= thumbWidth/2;
thumb.y -= thumbHieght/2;
middleContainer.x += thumbWidth/2;
middleContainer.y += thumbHieght/2;
var scaleUp:Tween = new Tween (middleContainer, "scaleX", Strong.easeOut, 0, 1, 1, true)
}
// Scales All Thumbs from One point not individually :((
答案 0 :(得分:1)
我认为这是因为middleContainer
的所有实例都位于同一位置 - 即。以舞台的起源为中心。我认为您需要横向放置这些实例(正如您当前正在为loader
实例执行的操作),然后在容器内偏移缩略图。
未经测试,但类似于以下内容:
var thumbsContainer:MovieClip;
var thumb_Loader: Loader;
var thumb: Loader;
var middleContainer: MovieClip;
var loadCount:int = 0; // use a load count to preserve index
function createThumbs(): void {
thumbsContainer = new MovieClip();
stage.addChild(thumbsContainer);
for (var i: uint = 0; i < 5 ; i++) {
thumb_URL = VideoList[i].@THUMB_URL;
thumb_Loader = new Loader();
thumb_Loader.load(new URLRequest(Thumb_URL));
thumb_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, viewThumbs);
// Need to do this to the middleContainer instances instead
//thumb_Loader.x = i * (thumbWidth + thumbSpacing);
}
}
function viewThumbs(e: Event): void {
thumb = e.target.loader;
thumb.x -= thumbWidth / 2;
thumb.y -= thumbHeight / 2;
middleContainer = new MovieClip();
middleContainer.x = loadCount * (thumbWidth + thumbSpacing); // lay the container's out horizontally
middleContainer.addChild(thumb);
thumbsContainer.addChild(middleContainer);
// This is just reversing the offset you're usng to centre the thumb
//middleContainer.x += thumbWidth/2;
//middleContainer.y += thumbHieght/2;
loadCount ++;
var scaleUp:Tween = new Tween (middleContainer, "scaleX", Strong.easeOut, 0, 1, 1, true)
}
答案 1 :(得分:1)
您的问题可能与这两行有关:
thumb.x -= thumbWidth/2;
thumb.y -= thumbHieght/2; //you spelled height wrong in this variable name
虽然你没有表现出来,但我猜测thumbWidth
&amp;对于您经历的每个缩略图,thumbHeight
都会递增。拇指的位置不应考虑拇指宽度/高度以外的任何内容,任何实际定位都应仅在父容器(middleContainer
)上完成。将其更改为以下内容仅偏移缩略图的实际宽度:
thumb.x = thumb.width * -0.5;
thumb.y = thumb.height* -0.5;
因此,如果你的目标是将缩略图放在行中,你可以执行以下操作(为了清晰起见,我将thumbWidth和thumbHeight重命名为rowX和rowY:
var rowHeight:Number = 0;
var rowX:Number = 0;
var rowY:Number = 0;
function viewThumbs(e: Event): void {
thumb = e.target.loader;
middleContainer = new MovieClip();
middleContainer.addChild(thumb);
thumbsContainer.addChild(middleContainer);
thumb.x = thumb.width * -0.5;
thumb.y = thumb.height* -0.5;
if(rowX + thumb.width > stage.stageWidth){ //stage.stageWidth being whatever you want the maximum row width to be
//create a new row
rowX = 0;
rowY += rowHeight + 10; //10 being padding
rowHeight = 0; //reset row height;
}
middleContainer.x = rowX;
middleContainer.y = rowY;
rowHeight = Math.max(rowHeight, thumb.height); //store the thumb with the biggest height in this row
rowX += thumb.width + 10; //10 being some padding - increments the x position
var scaleUp:Tween = new Tween (middleContainer, "scaleX", Strong.easeOut, 0, 1, 1, true)
}