本文整理汇总了C++中Stage::TouchedSignal方法的典型用法代码示例。如果您正苦于以下问题:C++ Stage::TouchedSignal方法的具体用法?C++ Stage::TouchedSignal怎么用?C++ Stage::TouchedSignal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stage
的用法示例。
在下文中一共展示了Stage::TouchedSignal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UtcDaliStageTouchedSignalN
int UtcDaliStageTouchedSignalN(void)
{
TestApplication application;
Stage stage = Stage::GetCurrent();
TouchedSignalData data;
TouchedFunctor functor( data );
stage.TouchedSignal().Connect( &application, functor );
// Render and notify.
application.SendNotification();
application.Render();
// Confirm functor not called before there has been any touch event.
DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
// No actors, single touch, down, motion then up.
{
Integration::TouchEvent touchEvent;
touchEvent.points.push_back( TouchPoint( 0, TouchPoint::Down, 10.0f, 10.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
data.Reset();
// Confirm there is no signal when the touchpoint is only moved.
touchEvent.points[0].state = TouchPoint::Motion;
touchEvent.points[0].screen.x = 1200.0f; // Some motion
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
data.Reset();
// Confirm a following up event generates a signal.
touchEvent.points[0].state = TouchPoint::Up;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
data.Reset();
}
// Add an actor to the scene.
Actor actor = Actor::New();
actor.SetSize( 100.0f, 100.0f );
actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
actor.TouchedSignal().Connect( &DummyTouchCallback );
stage.Add( actor );
// Render and notify.
application.SendNotification();
application.Render();
// Actor on scene. Interrupted before down and interrupted after down.
{
Integration::TouchEvent touchEvent;
touchEvent.points.push_back( TouchPoint( 0, TouchPoint::Interrupted, 10.0f, 10.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
DALI_TEST_CHECK( data.receivedTouchEvent.points[0].state == TouchPoint::Interrupted );
data.Reset();
touchEvent.points[0].state = TouchPoint::Down;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( data.receivedTouchEvent.points[0].hitActor == actor );
DALI_TEST_CHECK( data.receivedTouchEvent.points[0].state == TouchPoint::Down );
data.Reset();
touchEvent.points[0].state = TouchPoint::Interrupted;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
DALI_TEST_CHECK( data.receivedTouchEvent.points[0].state == TouchPoint::Interrupted );
DALI_TEST_EQUALS( data.receivedTouchEvent.GetPointCount(), 1u, TEST_LOCATION );
// Check that getting info about a non-existent point causes an assert.
bool asserted = false;
try
{
data.receivedTouchEvent.GetPoint( 1 );
}
catch( Dali::DaliException& e )
{
DALI_TEST_PRINT_ASSERT( e );
DALI_TEST_ASSERT( e, "point < points.size() && \"No point at index\"", TEST_LOCATION );
asserted = true;
}
//.........这里部分代码省略.........
示例2: UtcDaliStageTouchedSignalP
int UtcDaliStageTouchedSignalP(void)
{
TestApplication application;
Stage stage = Stage::GetCurrent();
TouchedSignalData data;
TouchedFunctor functor( data );
stage.TouchedSignal().Connect( &application, functor );
// Render and notify.
application.SendNotification();
application.Render();
// Basic test: No actors, single touch (down then up).
{
Integration::TouchEvent touchEvent;
touchEvent.points.push_back( TouchPoint( 0, TouchPoint::Down, 10.0f, 10.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
data.Reset();
touchEvent.points[0].state = TouchPoint::Up;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
data.Reset();
}
// Add an actor to the scene.
Actor actor = Actor::New();
actor.SetSize( 100.0f, 100.0f );
actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
actor.TouchedSignal().Connect( &DummyTouchCallback );
stage.Add( actor );
// Render and notify.
application.SendNotification();
application.Render();
// Actor on scene, single touch, down in actor, motion, then up outside actor.
{
Integration::TouchEvent touchEvent;
touchEvent.points.push_back( TouchPoint( 0, TouchPoint::Down, 10.0f, 10.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( data.receivedTouchEvent.points[0].hitActor == actor );
data.Reset();
touchEvent.points[0].state = TouchPoint::Motion;
touchEvent.points[0].screen.x = 150.0f; // Some motion
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
data.Reset();
touchEvent.points[0].state = TouchPoint::Up;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_CHECK( data.receivedTouchEvent.GetPointCount() != 0u );
DALI_TEST_CHECK( !data.receivedTouchEvent.points[0].hitActor );
data.Reset();
}
// Multiple touch. Should only receive a touch on first down and last up.
{
Integration::TouchEvent touchEvent;
// 1st point
touchEvent.points.push_back( TouchPoint( 0, TouchPoint::Down, 10.0f, 10.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION );
DALI_TEST_EQUALS( data.receivedTouchEvent.GetPointCount(), 1u, TEST_LOCATION );
data.Reset();
// 2nd point
touchEvent.points[0].state = TouchPoint::Stationary;
touchEvent.points.push_back( TouchPoint( 1, TouchPoint::Down, 50.0f, 50.0f ) );
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
DALI_TEST_EQUALS( data.receivedTouchEvent.GetPointCount(), 0u, TEST_LOCATION );
data.Reset();
// Primary point is up
touchEvent.points[0].state = TouchPoint::Up;
touchEvent.points[1].state = TouchPoint::Stationary;
application.ProcessEvent( touchEvent );
DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION );
DALI_TEST_EQUALS( data.receivedTouchEvent.GetPointCount(), 0u, TEST_LOCATION );
data.Reset();
// Remove 1st point now, 2nd point is now in motion
//.........这里部分代码省略.........