我想隨機化矢量中的動畫片段位置。添加到主舞臺的顯示列表中。我有這個功能,與它們的特性生成的MovieClip:調用函數以消除矢量後消失的繪製位圖
private function initMovieClips():Vector.<MovieClip>
{
var initVec:Vector.<MovieClip> = new Vector.<MovieClip>();
for (var i:int = 0; i < Math.ceil(this.numBlocks/2); i++)
{
var typeVarianceChance:Number = Math.random();
var colorVarianceChance:Number = Math.random();
var ranType:Number = Math.floor(this.numTypes * Math.random());
var coRanType:Number;
if (typeVarianceChance < .2)
{
coRanType = Math.floor(this.numTypes * Math.random());
} else {
coRanType = this.typeHash[ranType];
}
var ranColor:Number = Math.floor(this.imageURLs.length * Math.random());
var coRanColor:Number;
if (colorVarianceChance > .1)
{
coRanColor = Math.floor(this.imageURLs.length * Math.random());
} else {
coRanColor = ranColor;
}
var mc:MovieClip = new MovieClip();
var comc:MovieClip = new MovieClip();
mc.type = ranType;
comc.type = coRanType;
mc.color = ranColor;
comc.color = coRanColor;
initVec.push(mc,comc);
}
return initVec;
}
位圖然後被加載並繪製到各圖像。然後我調用這個函數來隨機「拖曳」Vector。
private function shuffle(vec:Vector.<MovieClip>):Vector.<MovieClip>
{
var shuffled:Vector.<MovieClip> = new Vector.<MovieClip>();
var origLength:uint = vec.length;
for (var i:int = 0; i < origLength; i++){
var ranPos:uint = Math.floor(Math.random() * vec.length);
shuffled.push(vec[ranPos]);
delete vec[ranPos];
}
return shuffled;
}
如果我不調用shuffle函數,Bitmaps繪製得很好。但是,如果我在我的Vector上調用shuffle函數。在我將它們添加到顯示列表(我已經測試並知道正在發生)後,某些影片剪輯不會顯示在屏幕上。一些隨機出現,一些則沒有。每次運行我的應用程序時顯示哪些顯示,哪些顯示爲隨機(可能與我的initMovieClips
函數有關,後者使用僞隨機代碼?)。
我已經試過在我的代碼中的不同點執行洗牌功能,在已經繪製位圖的地方,以及我甚至沒有調用函數開始加載位圖的地方(所以我不用不認爲這是一個線程問題)。我甚至嘗試插入代碼在每個MovieClip的圖形屬性上繪製一個簡單的測試圈。只是爲了看看它是否是Bitmap的問題,但是沒有繪製的那個沒有顯示位圖或測試圈。這導致我相信這是圖形屬性本身的問題。這讓我完全陷入了沉思。任何想法可能是什麼?
無論如何,這不會是一個線程問題,因爲flash在單線程上運行。 – 2011-05-14 02:26:52
我認爲除了網絡相關的東西(加載等)之外,一切都在一個線程上運行。 – whitneyz 2011-05-16 16:55:21