2019년 12월 11일 수요일

cocos2d를 다루던 중 Sprite에서 에러를 맞이 하고 있는 당신에게


void GameScene::onTouchMoved(Touch* touch, Event* unused_event) {
          Vec2 location = touch->getLocation();
       
                   flightMove(location);
}


void GameScene::flightMove(Vec2 location) {
          if (beganTouchVec2 != location) {
                   Vec2 v2 = location - beganTouchVec2;
                   flight->setPosition(flight->getPosition()+ v2);
          }
          beganTouchVec2 = location;

}


이전 위치가 아니라 터치가 움직였다면 포지션을 바꿔주는 방법이었는데
요 moved 함수에 잘 못 넣었다가 크게 당했다.
조금만 생각해보면 flight객체가 지워지는 순간 애러가 발생하는 것을 ..
flight 객체가 지워지면 내가 작성했던 코드에서는  Gavaover 이미지가 띄워지고 모든 스케쥴이 중단된다. 리스너를 해체해줄까 이런 생각도 들었지만 조금 더 내 귀잖음이 나를 생각의 길로 이끌었다.

 한참 고민하다가 Unity에서 하던 방식이 생각났다.

좋았어

update 스케쥴을 선언하여

void GameScene::update(float delta) {
flightMove(onTouchMovedV2);
}
이렇게 바꾸었다. 물론 .. onTouchMovedV2 저기 위에 있는 location Vec2 값이다.
중요한건 이 에러를 검사 당일날 봤다는 것 ..
고치지 못했다 후 .. 그래도 내 학점과 바꿔서 답을 찾아 냈다 !

우린 답을 찾을 것이다. 늘 그랬듯이
-인터스텔라-

누가 내 머리도 update 해주면 안되냐




© 특히하고 특별한
Maira Gall