void LevelScene::onTouchMoved(Touch* touch, Event* event) { Point point = this->convertTouchToNodeSpace(touch); Point vectorMove = Point::ZERO; if (!this->isMoved) { vectorMove = point - this->firstPoint; } else { vectorMove = point - this->movePoint; } this->updateLevelLayer(vectorMove); this->movePoint = point; this->isMoved = true; // update flash { Point point = this->convertTouchToNodeSpace(touch); point = point - this->levelLayer->getPosition(); for (int i = 0; i < this->levelLayer->getChildren().size(); i++) { CSprite* levelFace = dynamic_cast<CSprite*>(this->levelLayer->getChildren().at(i)); if (levelFace != NULL) { RectBody* levelBody = new RectBody(levelFace->getContentSize().width, levelFace->getContentSize().height); levelBody->setPosition(levelFace->getPosition()); } } } }
bool LevelScene::onTouchBegan(Touch* touch, Event* event) { Point point = this->convertTouchToNodeSpace(touch); this->isMoved = false; this->isTouched = false; RectBody* chapterLayerBody = new RectBody(this->levelLayer->getContentSize().width, this->levelLayer->getContentSize().height); chapterLayerBody->setPosition(this->levelLayer->getPosition() + Point(chapterLayerBody->getWidth() / 2, chapterLayerBody->getHeight() / 2)); if (chapterLayerBody->contains(point)) { this->isTouched = true; this->firstPoint = point; // update flash { Point point = this->convertTouchToNodeSpace(touch); point = point - this->levelLayer->getPosition(); for (int i = 0; i < this->levelLayer->getChildren().size(); i++) { CSprite* levelFace = dynamic_cast<CSprite*>(this->levelLayer->getChildren().at(i)); if (levelFace != NULL) { RectBody* levelBody = new RectBody(levelFace->getContentSize().width, levelFace->getContentSize().height); levelBody->setPosition(levelFace->getPosition()); } } } return true; } return false; }
void LevelScene::onTouchEnded(Touch* touch, Event* event) { if (this->dialogLayer->isVisible()) { return; } this->updatePageAuto(); Point point = this->convertTouchToNodeSpace(touch); bool moveTooFar = false; float dx = point.x - this->firstPoint.x; float dy = point.y - this->firstPoint.y; if (abs(dx) > CONF_TOUCH_RANGE || abs(dy) > CONF_TOUCH_RANGE) { moveTooFar = true; } point = point - this->levelLayer->getPosition(); for (int i = 0; i < this->levelLayer->getChildren().size(); i++) { CSprite* levelFace = dynamic_cast<CSprite*>(this->levelLayer->getChildren().at(i)); if (levelFace != NULL) { RectBody* levelBody = new RectBody(levelFace->getContentSize().width, levelFace->getContentSize().height); levelBody->setPosition(levelFace->getPosition()); if (levelBody->contains(point)) { if (!moveTooFar && levelFace->getTag() != -1) { DataEvent* gameEvent = new DataEvent(); gameEvent->setEventCode(EVT_START_LEVEL); gameEvent->setArgumentInt(levelFace->getTag()); this->fireEvent(gameEvent); this->_eventDispatcher->removeEventListener(this->touchListener); } break; } } } }