Object Hierarchy | 関連する C++クラス:TimerEvent
TimerEvent
v5.1
TimerEvent は、システムタイマを表します。このオブジェクトを使用して、タイマが経過する間隔と遅延時間を指定できます。Softimage のタイマは、タイムラインクロックから独立しており、反復操作を正確に生成するのに使用できます。たとえば、TimerEvent を使用して、自動保存メカニズムを実装できます。
EventInfoTimerEvent オブジェクトは、から操作され、通常の Softimage イベントと同じように管理できます。登録するにはPluginRegistrar.RegisterTimerEventを使用し、アクセスするにはXSIApplication.EventInfosを使用します。タイマイベントは、ミュートして停止したり、ミュートを解除して再開することができます(EventInfo.Muteを参照)。タイマをリセットする場合は、TimerEvent.Resetを使用します。
注:タイマイベントは、Windows タイマがベースになっており、Softimage によって処理されますが、優先度は低く設定されています。ミリ秒単位で正確に設定することもできますが、タイマイベントは Softimage の現在のアクティビティによっては遅延することがあります。
Application | Attributes | Categories | CustomData |
Delay | FileName | FullName | Handler |
Help | Interval | Language | Mute |
Name | NestedObjects | Origin | OriginPath |
Parent | Type | ||
/* This example demonstrates how to register a timer event and to change its values. To try out this example save it into the Plugins directory (User, Factory or Workgroup). Once you have restarted Softimage, the current scene will be saved automatically every 15 secs. ( You can also load the plug-in without restarting Softimage - see XSIApplication.LoadPlugin ) */ function XSILoadPlugin( in_reg ) { in_reg.Author = "Softimage SDK Team" ; in_reg.Name = "SDK Example - Save scene timer" ; in_reg.Major = 1 ; in_reg.Minor = 0 ; // Register the save scene timer. The timer elapses every 15 secs. (0==no delay) in_reg.RegisterTimerEvent( "AutoSaveSceneTimer", 15000, 0 ); in_reg.RegisterProperty( "AutoSaveProp" ); in_reg.RegisterMenu( siMenuMainTopLevelID, "Auto Save Demo", true, false ); return true ; } function AutoSaveSceneTimer_OnEvent( ctxt ) { // Save current scene Application.SaveScene( ); // Log time var strFileName = ActiveProject.ActiveScene.Parameters("Filename").Value; var today = new Date(); var strTime = today.toDateString(); strTime += ", " + today.toTimeString(); Application.LogMessage( "<"+strFileName+">" + " saved on " + strTime ); // Do not mute the timer return false; } function GetAutoSaveProp( ) { var strName = "AutoSaveProp"; var root = ActiveSceneRoot; var prop = root.Properties.Item( strName ) ; if ( prop == null ) { return root.AddProperty( strName ); } else { return prop ; } } function AutoSaveDemo_Init( in_ctxt ) { var menu = in_ctxt.source; menu.AddCallbackItem( "Launch Auto Save Demo", "ShowAutoSaveProp" ); return true; } function ShowAutoSaveProp( ) { InspectObj( GetAutoSaveProp( ), "", "", siLock ); } function AutoSaveProp_Define( ctxt ) { var pset; pset = ctxt.Source; pset.AddParameter2("Auto_Save_Interval",siInt4,15,0,50,null,null,0,siPersistable); pset.AddParameter2("Auto_Save_Delay",siInt4,0,0,50,null,null,0,siPersistable); pset.AddParameter2("Auto_Save_Scene",siBool,true,null,null,null,null,0,siPersistable); return true; } function AutoSaveProp_DefineLayout( ctxt ) { var layout,oItem; layout = ctxt.Source; layout.Clear(); layout.AddGroup(); layout.AddItem("Auto_Save_Interval", "Interval (secs)" ); layout.AddItem("Auto_Save_Delay", "Delay (secs)" ); layout.EndGroup(); layout.AddGroup(); layout.AddRow( ); layout.AddButton( "Auto_Save_Reset","Reset Timer" ) ; layout.AddGroup(); layout.EndGroup(); layout.AddItem( "Auto_Save_Scene", "Enable" ); layout.EndRow( ); layout.EndGroup(); return true; } function AutoSaveProp_OnInit( ctxt ) { var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); var p = PPG.Auto_Save_Interval; p.Value = evTimer.Interval / 1000; p = PPG.Auto_Save_Delay; p.Value = evTimer.Delay / 1000; } //-------------------------------------------------------------------------- // Reset Timer button callback to restart the Auto Save timer with new values //-------------------------------------------------------------------------- function AutoSaveProp_Auto_Save_Reset_OnClicked() { var p = PPG.Auto_Save_Interval; var interval = p.Value * 1000; p = PPG.Auto_Save_Delay; var delay = p.Value * 1000; var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); evTimer.Reset( interval, delay ); // update the UI PPG.Auto_Save_Scene.Value = true; } //-------------------------------------------------------------------------- // Start/Stop the AutoSaveSceneTimer timer. //-------------------------------------------------------------------------- function AutoSaveProp_Auto_Save_Scene_OnChanged( ) { var paramVal = PPG.Auto_Save_Scene.Value; var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); evTimer.Mute = paramVal==false; } |