Wiki


Wiki Table of Contents

Tags

Page Details

Published by:
This page has not yet been rated

Silverlight Tip of the Day #50 – Main Game Loop Revisited!

Filed under: [Edit Tags]

Trong phiên bản gần đây của  Silverlight 2 RC0 có một sự kiện mới ( new event) mà diễn ra một lần trước sự biểu diễn của mỗi frame trong trình duyệt của bạn. Sự kiện  rendering event được xác định  cho các sự kiện  event handler cụ thể sau khi chuyển động (animation) và kiến trúc (layout) được áp dụng cho composition tree . Ngoài ra, nếu thay đổi visual tree bắt buộc phải thay đổi composition tree, và sự kiện  event handler của bạn  cũng được gọi. (Tức là, theo kpopyo hiểu, CompositionTarget.Rendering event là sự kiện làm cho chuyển động của các đối tượng diễn ra một cách liên tục, như là tuyết rợi liên tục)

Vì thế, thay vì phải sử dụng  DispatchTimer or Storyboard Timer,  bây giờ bạn có thể sử dụng event mới này cho MainGameLoop() của bạn. Để thêm sự kiện mới này tất cả điều bạn cần làm là thực hiện gọi như sau:

CompositionTarget.Rendering += new EventHandler(MainGameLoop);

Hãy nhìn lại đoạn code trong  Snowflake demo, đoạn code sau được sử dụng để tạo một   Storyboard timer để tạo vòng lặp chính:

Storyboard _snowflakeTimer = new Storyboard();
public
Page()

{
    InitializeComponent();
 
    _snowflakeTimer.Duration = TimeSpan.FromMilliseconds(0);
    _snowflakeTimer.Completed += new EventHandler(SnowFlakeTimer);
    _snowflakeTimer.Begin();
}
 
private void SnowFlakeTimer(object sender, EventArgs e)
{
    MoveSnowFlakes();
    CreateSnowFlakes();
}

Và cách khác là:

public Page()
{
    InitializeComponent();
 
    CompositionTarget.Rendering += new EventHandler(SnowFlakeTimer);
}
 
private void SnowFlakeTimer(object sender, EventArgs e)
{
    MoveSnowFlakes();
    CreateSnowFlakes();
}

Thank you,
--Mike Snow

Recent Comments

Leave the first comment for this page.