当前位置: 首页>>代码示例>>C++>>正文


C++ Stage::TouchedSignal方法代码示例

本文整理汇总了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;
    }
//.........这里部分代码省略.........
开发者ID:mettalla,项目名称:dali,代码行数:101,代码来源:utc-Dali-Stage.cpp

示例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
//.........这里部分代码省略.........
开发者ID:mettalla,项目名称:dali,代码行数:101,代码来源:utc-Dali-Stage.cpp


注:本文中的Stage::TouchedSignal方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。