最後編輯:已解決!Actionscript 3:動態添加限制在容器中的動畫片段
嗯,我無法在這裏找到完整的答案,但我終於得到了我之後的東西。非常感謝您的全力幫助和耐心。
作爲附註:我想我可能一直在使用int和Number類型有問題,仔細檢查我的解決方案後,我意識到Number正在被使用而不是int。結果數字包含浮點數,而int不包含。每當我試圖解決這個問題時,我的數字可能都是四捨五入的。對於我所知道的,TDI的答案可能已經被發現,並且使用int來填充可能會累積四捨五入的數字。哦,那麼你每天都會學到一些東西..
正確的代碼將電影剪輯限制爲在時尚我一直在尋找的容器影片剪輯(或雪碧或其他)是這樣的:
var picContainer:PicContainer = new PicContainer();
picContainer.x = stage.stageWidth/2 - picContainer.width/2;
picContainer.y = stage.stageHeight/2 - picContainer.height/2;
addChild(picContainer);
var totalPics:int = 17;
var pic:Pic = new Pic(); //make an instance just to get its width
var xRange:Number = picContainer.width - pic.width;
var spacing:Number = xRange/(totalPics - 1);
//A little optimization: only need to calculate this number ONCE:
var yLoc:Number = picContainer.height/2 - pic.height/2;
for(var i:int = 0; i < totalPics; i++) {
pic = new Pic();
pic.x = i * spacing;
pic.y = yLoc;
picContainer.addChild(pic);
}
的邏輯是相當簡單的,我不知道爲什麼我不能得到它我自己,因爲我提請圖表說明這個邏輯。然而,我不能把這些數字放在正確的地方,否則我不會問,我會嗎?P
獎勵內容! 作爲一個額外的好處(如果有人發現此線程尋找答案..) 你也可以通過使用此代碼從中心點(但他們仍然按照從左到右的順序) :
var picContainer:PicContainer = new PicContainer();
picContainer.x = stage.stageWidth/2 - picContainer.width/2;
picContainer.y = stage.stageHeight/2 - picContainer.height/2;
addChild(picContainer);
var totalPics:int = 5;
var pic:Pic = new Pic(); //make an instance just to get its width
var padding:Number = (picContainer.width - (pic.width * totalPics))/(totalPics + 1);
for(var i:int = 0; i < totalPics; i++) {
pic = new Pic();
pic.x = padding + i * (pic.width + padding);
pic.y = picContainer.height/2 - pic.height/2;
picContainer.addChild(pic);
}
試一試,這些使得偉大的縮略圖停靠引擎!
第一編輯:嗯,TDI有一些進步,但不是一個完整的解決方案。
你看,問題仍然是電影剪輯沒有完全壓入容器,最後一個或兩個仍然伸出。再次
var newPicContainer:picContainer = new picContainer();
var newPic:pic;
var picwidth:int = 100;
var amountofpics:int = 22;
var i:int;
//add a container
addChild(newPicContainer);
//center our container
newPicContainer.x = (stage.stageWidth/2)- (newPicContainer.width/2);
newPicContainer.y = (stage.stageHeight/2)- (newPicContainer.height/2);
var totalpicwidth:int = picwidth*amountofpics;
var totalpadding:int = newPicContainer.width - totalpicwidth;
var paddingbetween:int = (totalpadding/amountofpics);
for (i = 0; i < amountofpics; ++i)
{
//make a new mc called newPic(and i's value) eg. newPic1
this['newPic' + i] = new pic();
this['newPic' + i].width = picwidth;
//add our pic to the container
newPicContainer.addChild(this['newPic' + i]);
//set the new pics X
if (i != 0)
{
// if i is not 0, set newpic(i)s x to the previous pic plus the previous pics width and add our dynamic padding
this['newPic' + i].x = this['newPic' + (i-1)].x + picwidth + paddingbetween;
}
else
{
this['newPic' + i].x = 0;
}
}
由於任何人事先:
example:
我修改後的代碼看起來是這樣的!
原貼:
你好,第一次在這裏發帖。我希望我沒有得到任何錯誤。我的問題如下:
我有一個非常基本的循環,創建一個'縮略圖',並將其放在包含的影片剪輯中的前一個(有點填充)旁邊。
var newPicContainer:picContainer = new picContainer();
var newPic:pic;
var amount:int = 9;
var i:int;
//Add our container
addChild(newPicContainer);
//center our container
newPicContainer.x = (stage.stageWidth/2)- (newPicContainer.width/2);
newPicContainer.y = (stage.stageHeight/2)- (newPicContainer.height/2);
for (i = 0; i < amount; ++i)
{
newPic = new pic();
newPicContainer.addChild(newPic);
//just so i know it's adding them..
trace(newPic.thisOne);
newPic.thisOne = i;
// set this one to its self (+5 for padding..) Times, the amount already placed.
newPic.x = (newPic.width+5) *i;
}
我想知道是否有某種公式或「魔法數學」,我可以用它來找出容器的長度,並在「縮略圖」相對於這個數字增加。基本上壓縮彼此的縮略圖,使他們都適合內部..
東西沿着線:
newPic.x = (newPic.width *i) - stuff here to make it know not to go past the containing width;
我必須承認,我不跟數學等編碼的這部分脫離了我太大..
感謝任何考生提前..
嗨,非常感謝您的意見!我已經看到你在那裏做了什麼,而且大部分都很棒!無論如何,我需要一個好的時間讓我的頭腦圍繞邏輯,因爲你使用了我以前從未見過的一些編碼方法(如果語句像'Wha ..?')總之,這種方法仍然存在問題,因爲即使它很好地擠壓了電影剪輯,它們也不會完全擠壓到容器中,並且在右側切下一點點。你(或者其他人)對如何解決這個問題有想法嗎?我編輯了我的主帖以反映我的新代碼。謝謝=) – Partack 2010-10-17 02:26:08
我不得不編輯我的答案,因爲我寫的「長度」應該是「寬度」的顯示對象的屬性。長度屬性是針對數組的。 – TheDarkIn1978 2010-10-17 17:08:44
Ohhhh ...所以這就是長度和寬度之間的差異。我認爲這可能是錯誤的xD,謝謝你對此的幫助,儘管你的回答並沒有給我我想找的東西,但它幫助我理解了我應該如何考慮要檢查的數字得到什麼答案。像我的編輯建議頂部,我找到了解決方案,它非常接近你在做什麼,所以非常感謝你的時間和耐心回答我的問題=) – Partack 2010-10-18 22:35:08