版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、我的思路:分成两部分来实现:
1、第20个方块移动之前:首先触发第一次:第一个方块移动;首先触发第二次:第一个和第二个方块移动;首先触发第三次:第一个第二个第三个方块移动;以此类推。
2、所有的都持续移动:触发一次,所有的方块都触发。
具体代码如下:
void m_tmr1_Tick( object sender, EventArgs e )
{
// 1、Delay trigger by PositionIndex
if( m_PositionIndex < m_nObjectNumber ) {
for( int i = 0; i <= m_PositionIndex; i++ ) {
EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
}
}
// 2、All blocks keep moving after trigger
if( m_PositionIndex > m_nObjectNumber - 1 ) {
for( int i = 0; i <= m_nObjectNumber - 1; i++ ) {
EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
}
}
}
二、解决方案:其实本身m_PositionIndex
本身 就是一个旗标,可以利用它来直接控制移动哪个方块,当m_PositionIndex
较小时,就移动它以及它之前的方块,这样就实现了顺序动作的目的。
void m_tmr1_Tick( object sender, EventArgs e )
{
for( int i = 0; i <= m_PositionIndex; i++ ) {
EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
}
if( m_PositionIndex < m_nObjectNumber-1 ) {
m_PositionIndex++;
}
}