cocos2d-x 3.2 + Cocosbuilder 3.0-alpha5에서의 Callback 지정

2345 단어 CocosBuildercocos2d-x

재생 완료 시 콜백 설정



auto ccbr = new ::cocosbuilder::CCBReader();
ccbr->getAnimationManager()->setAnimationCompletedCallback(target, selector);

target, selector 에 콜백의 함수를 지정한다.

(CCBReader를 취급하는 객체에 CCBAnimationManagerDelegate를 상속시켜, ccbr->getAnimationManager()->setDelegate(継承オブジェクト)로 하는 방법도 있다)

Timeline의 Callbacks에서 설정한 콜백 설정



삼행 결론


  • 본래의 방법에서는, CCBReader를 취급하는 오브젝트가 CCBSelectorResolver를 상속할 필요가 있어 바람직하지 않다
  • JS-Controlled가 설정된 경우 문자열을 키로 사용하여 함수를 등록 할 수 있습니다
  • .
  • cocosbuilder 관련 코드를 변경하고 JS-Controlled가 설정되지 않은 경우에도 문자열을 키로 함수를 등록 할 수있게합니다

  • (본래의) 구현 방법



    CCBReader를 처리하는 객체가 CCBSelectorResolver를 상속하고 다음 콜백에 대한 함수
    * onResolveCCBCCCallFuncSelector (Timeline의 Callbacks로 설정된 콜백)

    를 정의하여 구현한다.

    그건 그렇고 ....
    이 Resolver는 Menu 및 CCControl용 콜백
    * onResolveCCBCCMenuItemSelector (메뉴 클릭에 대한 콜백)
    * onResolveCCBCCControlSelector (CCControl에 대한 콜백)

    또한 가지고.

    문제 제기



    콜백을 위해서만 CCBSelectorResolver 을 상속하고 싶지 않다.
    단순히 "문자열을 키로 함수를 등록"하는 것이 바람직합니다.

    문제 보충



    여기서 실은 Cocosbuilder의 설정을 JS-Controlled로 했을 경우, 이하와 같이 문자열을 키로서 콜백 함수를 등록할 수 있다.
    
    ccb_reader->getAnimationManager()->setCallFunc(
        CallFunc::create(CC_CALLBACK_0(selector, target)),
        "key"
    );
    

    코드 변경


    JS-Controlled 설정과 동일한 처리를 비설정인 경우에도 실행하도록 한다.

    사용법의 예



    히트 이펙트의 애니메이션에 있어서, 애니메이션의 도중에 적이 데미지를 받는 연출을 실시하는 타이밍을 지정하고 싶다.
  • Cocosbuilder에서 콜백 지정

  • )

    (option + 클릭으로 등록 가능)

    언제든지キー: damage등록
  • 코드
  • 
    ccb_reader->getAnimationManager()->setCallFunc(
        CallFunc::create(CC_CALLBACK_0(Battle::damageToEnemy, this)),
        "damage"
    );
    

    보충


  • cocos2d-xCocosbuilder 버전이 다르더라도 문제가되지 않을 수 있습니다(확인되지 ​​않음)
  • 좋은 웹페이지 즐겨찾기