TimerEvent

TimerEvent

Object Hierarchy | 関連する C++クラス:TimerEvent

継承

SIObject

EventInfo

TimerEvent

導入

v5.1

詳細

TimerEvent は、システムタイマを表します。このオブジェクトを使用して、タイマが経過する間隔と遅延時間を指定できます。Softimage のタイマは、タイムラインクロックから独立しており、反復操作を正確に生成するのに使用できます。たとえば、TimerEvent を使用して、自動保存メカニズムを実装できます。

EventInfoTimerEvent オブジェクトは、から操作され、通常の Softimage イベントと同じように管理できます。登録するにはPluginRegistrar.RegisterTimerEventを使用し、アクセスするにはXSIApplication.EventInfosを使用します。タイマイベントは、ミュートして停止したり、ミュートを解除して再開することができます(EventInfo.Muteを参照)。タイマをリセットする場合は、TimerEvent.Resetを使用します。

注:タイマイベントは、Windows タイマがベースになっており、Softimage によって処理されますが、優先度は低く設定されています。ミリ秒単位で正確に設定することもできますが、タイマイベントは Softimage の現在のアクティビティによっては遅延することがあります。

メソッド

IsClassOfオペレータ IsEqualToオペレータ Reset  
       

プロパティ

Application Attributes Categories CustomData
Delay FileName FullNameオペレータ Handler
Help Interval Language Mute
Nameオペレータ NestedObjects Origin OriginPath
Parent Typeオペレータ    
       

JScript の例

/*

	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;

}