2010-01-30 83 views
1

我在这里有一个代码,它会丢弃第一行,然后在第二行下降第二行。第一行立即下降,第二行放在计时器上。as3随机丢弃物体

// Bring in first row 
var blueY:Tween = new Tween(blue, "y", Bounce.easeOut, -295, -49, 2, true); 
var pinkertonY:Tween = new Tween(pinkerton, "y", Bounce.easeOut, -295, -49, 2, true); 
var oddsEndsY:Tween = new Tween(oddsEnds, "y", Bounce.easeOut, -283, -37, 2, true); 
var raditudeY:Tween = new Tween(raditude, "y", Bounce.easeOut, -283, -37, 2, true); 

// Create and start second row timer 
var coverDropTimer:Timer = new Timer(500, 1); 
coverDropTimer.addEventListener(TimerEvent.TIMER, dropCovers); 
coverDropTimer.start(); 

// Bring in second row on timer 
var greenY:Tween; 
var maladroitY:Tween; 
var makeBelieveY:Tween; 
var redY:Tween; 
function dropCovers(e:TimerEvent):void{ 
    greenY = new Tween(green, "y", Bounce.easeOut, -460, -40, 2.5, true); 
    maladroitY = new Tween(maladroit, "y", Bounce.easeOut, -460, -40, 2.5, true); 
    makeBelieveY = new Tween(makeBelieve, "y", Bounce.easeOut, -457, -37, 2.5, true); 
    redY = new Tween(red, "y", Bounce.easeOut, -457, -37, 2.5, true); 
    coverDropTimer.removeEventListener(TimerEvent.TIMER, dropCovers); 
} 

我该如何在两个设定的数字之间随机地分别放置每个封面?我假设我将不得不为每一个计算器分别应用一个计时器,然后以某种方式在两个数字之间产生随机数的时间?

不知道如何去做这件事。

感谢, 韦德

+0

你是说,而不是丢弃,一个行那么其他的,你希望每个8张专辑,4每一行中,所有的下拉随机并让他们在一段时间内完成? – sberry 2010-01-31 22:01:42

+0

是的,正是我在找的东西。 – 2010-02-02 08:08:54

回答

0

我不知道你在这方面“降”,“行”和“盖”的意思,反而使时间T1和T2你可以在2个随机定时事件将定时器链接在一起,如下所示:

// Choose random start time between T1 and T2 
var deltaT:int=T2-T1; 
var startTime:int = T1 + Math.random()*deltaT; 

// Choose random interval (some time before T2) 
var waitTime:int = Math.random()*(T2-startTime); 

// Create and start first event timer 
var firstTimer:Timer = new Timer(startTime, 1); 
firstTimer.addEventListener(TimerEvent.TIMER, firstEvent); 
firstTimer.start(); 

function firstEvent(e:TimerEvent):void{ 
//do stuff... 
// start the second timer 
var secondTimer:Timer = new Timer(waitTime, 1); 
secondTimer.addEventListener(TimerEvent.TIMER, secondEvent); 
secondTimer.start(); 
} 

function secondEvent(e:TimerEvent):void{ 
//do more stuff... 
} 

这有帮助吗?或者我误解了你的问题?

+0

谢谢,我会稍微尝试一下,看起来好像可以工作,但如果解决问题,我会告诉你。 封面,下拉和排只是我用来描述我的Flash组合的术语。我有8张专辑封面,分布在两排从顶部掉落的专辑封面。 – 2010-01-31 18:38:43

0

下面是做这件事的一种方法:

// Generate the absolute times the covers will drop 
// e.g. "Cover 1 will drop 1 second after loading, 
// ..Cover 2 will drop 4 seconds after loading, etc." 
// MIN_TIME = earliest you want a cover to drop 
// MAX_TIME = latest you want a cover to drop 
var dropTimes:Array = new Array(); 
for (var i:int=0; i < numCovers; ++i) 
{ 
    dropTimes.push(Math.random() * (MAX_TIME - MIN_TIME) + MIN_TIME); 
} 

dropTimes.sort(Array.NUMERIC); 

// Convert the times into intervals (how long since the last drop) 
for (i = 1; i < numCovers; ++i) 
{ 
    dropTimes[i] = dropTimes[i] - dropTimes[i-1]; 
} 


var coverTweens:Array; 

// Insert code here to make an array of cover tweens, 
// ..in the order you want them to occur 
// If you call myTween.stop() immediately after making a Tween, 
// ..it won't play until you call myTween.start() . 

var currCover:int = 0; 
var coverDropTimer:Timer = new Timer(dropTimes[currCover]); 
coverDropTimer.addEventListener(TimerEvent.TIMER, dropNextCover); 
coverDropTimer.start(); 


function dropNextCover(e:TimerEvent):void { 
    // Bring the cover in! 
    coverTweens[currCover].start(); 

    ++currCover; 

    // Stop if we're at the last cover 
    if (currCover >= numCovers) { 
     coverDropTimer.stop(); 
     coverDropTImer.removeEventListener(TimerEvent.TIMER, dropNextCover); 
    } 
    else { 
     // Set the timer for the next cover 
     coverDropTimer.delay = dropTimes[currCover]; 
    } 
}