免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
まず、私の考えは、2つの部分に分かれ達成するために:
1、20平方移動する前に、第一初めてトリガ:最初のボックスの移動と、第一、第二の時間をトリガ第1及び第2のボックスは、移動、第1から第3の時間をトリガ:の第一、第二のようにして、3つのボックスを移動します。
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++;
}
}