///Referencing previous location results in garbage values ///Use only for hover void HelloWorld::onMouseMove(Event* event) { #ifdef MOUSE_DOUBLE_LISTEN_FUDGE mouseMoveFudge = !mouseMoveFudge; if(!mouseMoveFudge) return; #endif EventMouse* e = (EventMouse*)event; lastCursor.x = e->getCursorX(); lastCursor.y = e->getCursorY(); repaintCursor(); Protractor* p = (Protractor*)protractor; p->setCursorAngle(StaticHelpers::headingAngle(lastCursor - Director::getInstance()->getVisibleSize()/2)); if(isMouseDown[0]) {//LMB drag } if(isMouseDown[1]) {//RMB drag } if(isMouseDown[2]) {//MMB drag } std::stringstream ss; ss << "MousePosition X:"; ss << e->getCursorX() << " Y:" << e->getCursorY(); }
void MouseTest::onMouseUp(Event *event) { EventMouse* e = (EventMouse*)event; std::string str = "Mouse Up detected, Key: "; str += tostr(e->getMouseButton()); _labelAction->setString(str.c_str()); }
void HelloWorld::onMouseDown(Event* event) { #ifdef MOUSE_DOUBLE_LISTEN_FUDGE mouseDownFudge = !mouseDownFudge; if(!mouseDownFudge) return; #endif EventMouse* e = (EventMouse*)event; isMouseDown[e->getMouseButton()] = true; std::stringstream ss; ss << "Mouse Down "; ss << e->getMouseButton(); if(e->getMouseButton() == 1) { if(!getChildByName("animtest")) { auto s = new O3Sprite("", true); addSprite(s); s->addAnimation("idle", "animtest", 9, 12); s->setAnimation("idle"); s->playAnimation(); s->setName("animtest"); } else { removeChildByName("animtest"); } } }
void MouseTest::onMouseMove(Event *event) { EventMouse* e = (EventMouse*)event; std::string str = "MousePosition X:"; str = str + tostr(e->getCursorX()) + " Y:" + tostr(e->getCursorY()); _labelPosition->setString(str.c_str()); }
void HelloWorld::testMouseEvent() { auto listener = EventListenerMouse::create(); listener->onMouseDown = [&](Event* event){ log("onMouseDown"); }; listener->onMouseMove = [&](Event* event){ log("onMouseMove"); EventMouse* e = (EventMouse*)event; touch_pos = e->getLocation(); streak->setPosition(touch_pos); }; listener->onMouseUp = [&](Event* event){ log("onMouseUp"); }; listener->onMouseScroll = [&](Event* event){ log("onMouseScroll"); }; dispatcher->addEventListenerWithSceneGraphPriority(listener, this); }
void LCBattleScene::onMouseUp(Event *event) { EventMouse* e = (EventMouse*)event; //world->setGravity(Point(0 ,-98)); //world->setSpeed(1); // Vect vct = world->getGravity(); // float speed = world->getSpeed(); // right clicked move hero if(e->getMouseButton() == 1) { // retain screen double length //Point pos = CCDirector::getInstance()->convertToGL(Point(e->getCursorX(), e->getCursorY()));//glLocation, origin(0,0) //pos.y = CCDirector::getInstance()->getWinSize().height - pos.y / 2; //CCLOG("%f %f", pos.x, pos.y); //Point origin = hero->getrootObj()->getPosition(); //CCLOG("%f %f", origin.x, origin.y); //Point convertedToNodeLocation = backGround->convertToNodeSpace(pos); //Point p = getPointInMap(); hero->actionWalk(this, backGround->convertToNodeSpace(Point(e->getCursorX(), e->getCursorY()))); } else if(e->getMouseButton() == 0) { hero->actionAttack(); } }
void Tower::onMouseUp(cocos2d::Event* _event) { if(_isClosing == true || _returnFromSave == true) { _returnFromSave = false; return;// if we are pressing the close button, we dont want to build things! } EventMouse* e = (EventMouse*)_event; if(_isMovingToolPanal == true) { _isMovingToolPanal = false; return; //if we are moving a window, we dont want to build things! } if(_isBuildingFloor == true) { _isBuildingFloor = false; } float mPPY = e->getCursorY()+_mouseYOffset; float mPPX = e->getCursorX(); this->createStructure(Vec2(mPPX,mPPY)); }
void Tower::onMouseDown(cocos2d::Event* _event) { if(_isClosing == true || _returnFromSave == true) return;// if we are pressing the close button, we dont want to build things! EventMouse* e = (EventMouse*)_event; Vec2 tPP = _toolPanalLayer->getPosition(); float mPPY = e->getCursorY(); float mPPX = e->getCursorX(); mPPY=mPPY+_mouseYOffset; if(mPPY < tPP.y + TOOLPANAL_HEIGHT+2 && mPPY > tPP.y-2) if(mPPX > tPP.x -2 && mPPX < tPP.x + TOOLPANAL_WIDTH+2){ _isMovingToolPanal = true; _windowOffsetX = mPPX - tPP.x; _windowOffsetY = mPPY - tPP.y; return; } if(_currentStructure == OT::OTFLOOR) { _isBuildingFloor = true;//have to handle differently from other structures } }
void InputManager::getInput() { int c = getch(); if (c != ERR) { MEVENT m_event; if ((c == KEY_MOUSE) && (getmouse(&m_event) != ERR)) { if (m_event.bstate & BUTTON1_CLICKED) { int y = m_event.y; int x = m_event.x; EventMouse m; m.setMouseY(y); m.setMouseX(x); m.setMouseAction(LEFT_BUTTON_CLICK); onEvent((Event*) &m); } } else { EventKeyboard k; k.setKey(c); onEvent((Event*) &k); } } }
void MouseTest::onMouseScroll(Event *event) { EventMouse* e = (EventMouse*)event; std::string str = "Mouse Scroll detected, X: "; str = str + tostr(e->getScrollX()) + " Y: " + tostr(e->getScrollY()); _labelAction->setString(str.c_str()); }
// on "init" you need to initialize your instance bool HelloWorld::init() { if ( !Layer::init() ) { return false; } FileUtils::getInstance()->addSearchPath("../QtCocos2d/Resources"); FileUtils::getInstance()->addSearchResolutionsOrder("resource-auto"); Director::getInstance()->setContentScaleFactor(2.0f); Director::getInstance()->setAnimationInterval(FLT_MIN); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto centerNode = Node::create(); centerNode->setAnchorPoint(Point::ANCHOR_MIDDLE); // centerNode->setContentSize(visibleSize); centerNode->setPosition(origin + visibleSize/2); this->addChild(centerNode); auto frame = Sprite::create("system/frame_iphone4.png"); frame->setAnchorPoint(Point::ANCHOR_MIDDLE); centerNode->addChild(frame); auto worldPos = centerNode->convertToWorldSpace(frame->getPosition()); qDebug() << worldPos.x << "," << worldPos.y; auto listener = EventListenerMouse::create(); listener->onMouseScroll = [this, frame](Event* event){ EventMouse *e = dynamic_cast<EventMouse *>(event); if (NULL != e) { float scrollY = e->getScrollY(); frame->setScale(scrollY / 10.0f + frame->getScale()); } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); auto baseNode = Node::create(); baseNode->setContentSize(Size(480, 320)); baseNode->setPosition(baseNode->getContentSize() / -2 + frame->getContentSize()/2); frame->addChild(baseNode); worldPos = frame->convertToWorldSpace(baseNode->getPosition()); qDebug() << worldPos.x << "," << worldPos.y; /* ControlButton * button = ControlButton::create(); button->setTitleLabelForState(Label::createWithSystemFont("aaa", "MS Gothic", 12), Control::State::NORMAL); baseNode->addChild(button); */ _metaInfo = InterfaceLoader::getInstance().loadJSon("interface/scene/scenetest.json"); if (_metaInfo) { _metaInfo->retain(); baseNode->addChild(_metaInfo->getBaseNode()); } return true; }
void GameMenu::OnMouseMove(Event *event) { EventMouse *e = (EventMouse*)event; int x = e->getCursorX(); int y = e->getCursorY(); <<<<<<< HEAD
void HelloWorld::onMouseMove(Event* event) { EventMouse* e = (EventMouse*)event; CCPoint mousePosition = CCPoint(e->getCursorX(), e->getCursorY() + 640); auto block1 = startMenuItem->getBoundingBox(); if (block1.containsPoint(mousePosition)) largerItem(startMenuItem, 1); else largerItem(NULL, 0); }
void GameLayer::onMouseMove(cocos2d::Event* event) { EventMouse* e = (EventMouse*)event; auto p = Vec2(e->getCursorX(), e->getCursorY()); auto pPlayer = dynamic_cast<LeadingMan*>(this->getChildByTag(kTagPlayer)); }
void Tower::onMouseScroll(cocos2d::Event* _event) { if(_isClosing == true || _returnFromSave == true) return;// if we are pressing the close button, we dont want to build things! EventMouse* e = (EventMouse*)_event; _towerLayer->runAction(MoveBy::create(1/SCROLL_SPEED ,Vec2((-1*e->getScrollX())*SCROLL_MULTIPLIER, e->getScrollY()*SCROLL_MULTIPLIER))); }
void BaseScene::onMouseDown(Event* event){ cocos2d::log("down"); EventMouse * e = (EventMouse*)event; if(e->getMouseButton() == 0) cocos2d::log("left mouse"); else if(e->getMouseButton() == 1) cocos2d::log("right mouse"); else if(e->getMouseButton() == 2) cocos2d::log("middle mouse"); /* 都是获取当前点坐标,但e->getDelta()左上角是原点,y轴向下; /* e->getCursorX(), e->getCursorY()左上角是原点,y轴向上 */ }
void HelloWorld::onMouseUp(Event* event) { #ifdef MOUSE_DOUBLE_LISTEN_FUDGE mouseUpFudge = !mouseUpFudge; if(!mouseUpFudge) return; #endif EventMouse* e = (EventMouse*)event; isMouseDown[e->getMouseButton()] = false; timeSinceLastMouseUp = 0; std::stringstream ss; ss << "Mouse Up detected, Key: "; ss << e->getMouseButton(); }
void ScreenTest::onMouseScroll(Event *event) { EventMouse* e = (EventMouse*)event; float scrolly = e->getScrollY(); m_scale += scrolly / 10; if(m_scale < 0) { m_scale = 0; } refeshInfo(); }
///Input is 1 or -1 void HelloWorld::onMouseScroll(Event* event) { #ifdef MOUSE_DOUBLE_LISTEN_FUDGE mouseScrollFudge = !mouseScrollFudge; if(!mouseScrollFudge) return; #endif EventMouse* e = (EventMouse*)event; if(e->getScrollY() > 0) { auto vect = screenspaceToWorldspace(lastCursor); } else if(e->getScrollY() < 0) { } }
void WorldScene::mouseClick(cocos2d::Event* event, Player* player) { CCLOG("mouse"); CCLOG("Category %x", player->getPhysicsBody()->getCategoryBitmask()); CCLOG("Collision %x", player->getPhysicsBody()->getCollisionBitmask()); if (player->getArrow() > 0) { Vec2 loc = player->getPosition(); CCLOG("%d", player->getArrow()); EventMouse* mouseEvent = dynamic_cast<EventMouse*>(event); mouseEvent->getMouseButton(); //auto pro = Sprite::create("CloseNormal.png"); auto pro = Projectile::create(); pro->setPosition(loc); this->addChild(pro, 1); //pro->setPosition(mouseEvent->getLocation().x, this->getContentSize().height-mouseEvent->getLocation().y); if (player->getMode() == 'a') { pro->setMode('a'); Vec2 offset = mouseEvent->getLocation(); offset.y = this->getContentSize().height - offset.y; offset -= player->getPosition(); offset.normalize(); auto deg = atan(offset.x / offset.y) * 180 /3.14; if (offset.y<0) { deg += 180; } CCLOG("%f", deg); auto target = offset*1000 + player->getPosition(); auto rotate = RotateBy::create(0, deg); auto shoot = MoveTo::create(2.0f, target); auto remove = RemoveSelf::create(); pro->runAction(Sequence::create(rotate, shoot, remove, nullptr)); player->setArrow(player->getArrow() - 1); } else { pro->setMode('b'); auto shoot = MoveBy::create(2.0f, Vec2(0, 500)); auto remove = RemoveSelf::create(); pro->runAction(Sequence::create(shoot, remove, nullptr)); player->setArrow(player->getArrow() - 4); } setArrow(player->getArrow()); } }
void InputManager::getInput(){ int key = getch(); if(key != ERR){ MEVENT m_event; if(key == KEY_MOUSE && getmouse(&m_event) == OK){ if(m_event.bstate & BUTTON1_CLICKED){ EventMouse* em = new EventMouse(); em->setMouseAction(LEFT_BUTTON_CLICK); em->setMouseX(m_event.x); em->setMouseY(m_event.y); onEvent(em); } }else{ EventKeyboard* ek = new EventKeyboard(); ek->setKey(key); onEvent(ek); } } }
void GameScene::onMouseDown(Event* ev1) { EventMouse* ev = (EventMouse*)ev1; Vec2 loc = ev->getLocation(); int size = map.size(); /*for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { map.at(i + j).label->setColor(Color3B::BLUE); Vec2 mao = (map.at(i + j)).image->getPosition(); Vec2 origin = Vec2(mao.x - 19, mao.y - 19); Size size = Size(38.0, 38.0); Rect rect = Rect(origin, size); if (rect.containsPoint(loc)) { current = map.at(i + j); map.at(i + j).label->setColor(Color3B::RED); return; } } }*/ }
bool MouseScene::init() { if (!Layer::init()) { return false; } auto listener = EventListenerMouse::create(); listener->onMouseDown = [](cocos2d::Event* event) { try { EventMouse* mouseEvent = dynamic_cast<EventMouse*>(event); mouseEvent->getMouseButton(); std::stringstream message; message << "Mouse event: Button: " << mouseEvent->getMouseButton() << "pressed at point (" << mouseEvent->getLocation().x << ", " << mouseEvent->getLocation().y << ")"; MessageBox(message.str().c_str(), "Mouse Event Details"); } catch (std::bad_cast& e) { //not sure what kind of event you passed us cocos, but it was a wrong one return; } }; listener->onMouseMove = [](cocos2d::Event* event){ // Cast Event to EventMouse for position details like above cocos2d::log("Mouse moved event"); }; listener->onMouseScroll = [](cocos2d::Event* event){ cocos2d::log("Mouse wheel scrolled"); }; listener->onMouseUp = [](cocos2d::Event* event){ cocos2d::log("Mouse button released"); }; _eventDispatcher->addEventListenerWithFixedPriority(listener, 1); return true; }
void Tower::onMouseMove(cocos2d::Event* _event) { if(_isClosing == true || _returnFromSave == true) { _returnFromSave = false; return;// if we are pressing the close button, we dont want to build things! } EventMouse* e = (EventMouse*)_event; if(_isMovingToolPanal == true) { Vec2 tPP = _toolPanalLayer->getPosition(); float mPPY = e->getCursorY(); float mPPX = e->getCursorX(); mPPY=mPPY+_mouseYOffset; _toolPanalLayer->setPosition(Vec2(mPPX-_windowOffsetX,mPPY-_windowOffsetY)); } if(_isBuildingFloor == true) { float mPPY = e->getCursorY()+_mouseYOffset; float mPPX = e->getCursorX(); createStructure(Vec2(mPPX,mPPY)); } _mouseLayer->setPosition(e->getCursorX()-_currentStructureSize.width/2, _mouseYOffset + e->getCursorY() - _currentStructureSize.height/2); }
void MapLayer::onMouseMove(Event *event){ if(!mapEdit) return; EventMouse *e = (EventMouse*)event; Vec2 mousePos = e->getLocation(); mousePos.y = Director::getInstance()->getWinSize().height - mousePos.y; mousePos -= CreatureLayer::GetInstance()->getPosition(); mouseX = (int)mousePos.x/TILE_SIZE; mouseY = (int)mousePos.y/TILE_SIZE; if(mouseX < 0 || mouseX > width-1) mouseX = oldMouseX; if(mouseY < 0 || mouseY > height-1) mouseY = oldMouseY; if(oldMouseX != mouseX || oldMouseY != mouseY){ SetNavigationString(); if(isMouseDown){ if(isEraser) { Erase(mouseX, mouseY); } else{ Add(nowTile, mouseX, mouseY, 0.0f, false); if(nowTile < 10){ } else if(nowTile < 100){ obstacleCount++; } else{ objectCount++; } } } oldMouseX = mouseX; oldMouseY = mouseY; } }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = CCQGLView::getInstance(); //glview->setBgColor(Color4B(50, 50, 50, 255)); director->setOpenGLView(glview); _mainWindow.setGLView(glview->getGLWidget()); _mainWindow.initActionListWidget(); _mainWindow.show(); // turn on display FPS director->setDisplayStats(false); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object auto scene = Scene::create(); scene->setAnchorPoint(Vec2::ANCHOR_MIDDLE); scene->setContentSize(Director::getInstance()->getVisibleSize()); //scene->setPosition(Director::getInstance()->getVisibleSize() / 2); QString path; QDir dir; path = dir.currentPath(); FileUtils::getInstance()->addSearchPath(path.toStdString() + "/Resources"); FileUtils::getInstance()->addSearchPath("D://Resources"); auto keyboardEvent = EventListenerKeyboard::create(); keyboardEvent->onKeyPressed = [=](EventKeyboard::KeyCode code, Event*event) { if (code == EventKeyboard::KeyCode::KEY_CTRL) { m_dragMode = true; } }; keyboardEvent->onKeyReleased = [=](EventKeyboard::KeyCode code, Event*event) { if (code == EventKeyboard::KeyCode::KEY_CTRL) { m_dragMode = false; } }; Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(keyboardEvent, -1); auto scrollEvent = EventListenerMouse::create(); scrollEvent->onMouseScroll = [=](Event* event) { EventMouse* e = (EventMouse*)event; int scrollX = e->getScrollX(); int scrollY = e->getScrollY(); scene->setScale(scene->getScale() + (float)scrollY / 100.0f); Size currentSize = scene->getContentSize() * scene->getScale(); // scene->setScale(); }; auto eventListener = EventListenerTouchOneByOne::create(); eventListener->onTouchBegan = [=](Touch*touch, Event*event)->bool{ if (!m_dragMode) return false; return true; }; eventListener->onTouchMoved = [=](Touch*touch, Event*event) { scene->setPosition(scene->getPosition() + touch->getDelta()); }; eventListener->setSwallowTouches(true); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(eventListener, -3); Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(scrollEvent, -2); // run director->runWithScene(scene); CCRect rect(0, 0, scene->getContentSize().width, scene->getContentSize().height); CCSprite* grid = CCSprite::create("grid1_16x16_new_aaa.png"); grid->setTextureRect(rect); Texture2D::TexParams params = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT }; grid->getTexture()->setTexParameters(¶ms); grid->setAnchorPoint(Vec2::ZERO); grid->setPosition(Vec2::ZERO); scene->addChild(grid,0); // return true; }
void MousePaddle::onMouseMove(Event *event) { EventMouse *e = (EventMouse*)event; this->setPosition(Point(910, e->getCursorY())); // std::cout << "Paddle pos: " << toString(getPosition()) << std::endl; }
bool SplashLayer::init() { if (!Layer::init()) { return false; } //get Size Size visibleSize = Director::getInstance()->getVisibleSize(); //change splash image here: auto splash = Sprite::create("Splash.png"); splash->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2)); this->addChild(splash); auto start = Sprite::create("Splash_start.png"); start->setPosition(Vec2(visibleSize.width / 2, 300)); this->addChild(start); auto quit = Sprite::create("Splash_quit.png"); quit->setPosition(Vec2(visibleSize.width / 2, 200)); this->addChild(quit); //鼠标悬停,start按钮变大 auto startlistener = EventListenerMouse::create(); startlistener->onMouseMove = [=](Event* event) { Sprite* start = static_cast<Sprite*>(event->getCurrentTarget()); EventMouse* mouse = static_cast<EventMouse*>(event); if (mouse->getCursorX() > 417 && mouse->getCursorX() < 607 && mouse->getCursorY() > -484 && mouse->getCursorY() < -452) { if (aboveStart) { auto scale = ScaleTo::create(0.1f, 1.2f); start->runAction(scale); aboveStart = false; notAboveStart = true; } } else { if (notAboveStart) { auto scaleback = ScaleTo::create(0.1f, 1); start->runAction(scaleback); aboveStart = true; notAboveStart = false; } } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(startlistener, start); //鼠标悬停,quit按钮变大 auto quitlistener = EventListenerMouse::create(); quitlistener->onMouseMove = [=](Event* event) { Sprite* quit = static_cast<Sprite*>(event->getCurrentTarget()); EventMouse* mouse = static_cast<EventMouse*>(event); if (mouse->getCursorX() > 446 && mouse->getCursorX() < 578 && mouse->getCursorY() > -585 && mouse->getCursorY() < -551) { if (aboveQuit) { auto scale = ScaleTo::create(0.1f, 1.2f); quit->runAction(scale); aboveQuit = false; notAboveQuit = true; } } else { if (notAboveQuit) { auto scaleback = ScaleTo::create(0.1f, 1); quit->runAction(scaleback); aboveQuit = true; notAboveQuit = false; } } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(quitlistener, quit); //点击start按钮,场景切换进入关卡选择界面 auto startclick = EventListenerMouse::create(); startclick->onMouseDown = [](Event* event) { EventMouse* mouse = static_cast<EventMouse*>(event); if (mouse->getCursorX() > 417 && mouse->getCursorX() < 607 && mouse->getCursorY() > -484 && mouse->getCursorY() < -452) { //获取当前时间作为随机数种子 srand((unsigned int)time(nullptr)); //生成范围为[1, 20]的随机数,20中随机动画 int a = (rand() % 20) + 1; switch (a) { case 1: Director::getInstance()->replaceScene(TransitionProgressRadialCCW::create(0.5f, HomeScene::create())); break; case 2: Director::getInstance()->replaceScene(TransitionProgressRadialCW::create(0.5f, HomeScene::create())); break; case 3: Director::getInstance()->replaceScene(TransitionProgressHorizontal::create(0.5f, HomeScene::create())); break; case 4: Director::getInstance()->replaceScene(TransitionProgressVertical::create(0.5f, HomeScene::create())); break; case 5: Director::getInstance()->replaceScene(TransitionProgressInOut::create(0.5f, HomeScene::create())); break; case 6: Director::getInstance()->replaceScene(TransitionProgressOutIn::create(0.5f, HomeScene::create())); break; case 7: Director::getInstance()->replaceScene(TransitionFadeTR::create(0.5f, HomeScene::create())); break; case 8: Director::getInstance()->replaceScene(TransitionFadeBL::create(0.5f, HomeScene::create())); break; case 9: Director::getInstance()->replaceScene(TransitionFadeUp::create(0.5f, HomeScene::create())); break; case 10: Director::getInstance()->replaceScene(TransitionFadeDown::create(0.5f, HomeScene::create())); break; case 11: Director::getInstance()->replaceScene(TransitionTurnOffTiles::create(0.5f, HomeScene::create())); break; case 12: Director::getInstance()->replaceScene(TransitionMoveInL::create(0.5f, HomeScene::create())); break; case 13: Director::getInstance()->replaceScene(TransitionMoveInR::create(0.5f, HomeScene::create())); break; case 14: Director::getInstance()->replaceScene(TransitionMoveInT::create(0.5f, HomeScene::create())); break; case 15: Director::getInstance()->replaceScene(TransitionMoveInB::create(0.5f, HomeScene::create())); break; case 16: Director::getInstance()->replaceScene(TransitionSlideInB::create(0.5f, HomeScene::create())); break; case 17: Director::getInstance()->replaceScene(TransitionSlideInL::create(0.5f, HomeScene::create())); break; case 18: Director::getInstance()->replaceScene(TransitionSlideInR::create(0.5f, HomeScene::create())); break; case 19: Director::getInstance()->replaceScene(TransitionSlideInT::create(0.5f, HomeScene::create())); break; case 20: Director::getInstance()->replaceScene(TransitionPageTurn::create(0.5f, HomeScene::create(), true)); break; default: log("ERROR!"); break; } } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(startclick, start); //点击quit按钮退出整个app auto quitclick = EventListenerMouse::create(); quitlistener->onMouseDown = [](Event* event) { EventMouse* mouse = static_cast<EventMouse*>(event); if (mouse->getCursorX() > 446 && mouse->getCursorX() < 578 && mouse->getCursorY() > -585 && mouse->getCursorY() < -551) { Director::getInstance()->end(); } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(quitclick, quit); return true; }
bool EditorScene::init() { if (!Scene::init()) { return false; } auto size = Director::getInstance()->getVisibleSize(); // 3d _3dLayer = Layer::create(); this->addChild(_3dLayer, 1); auto bg = BillBoard::create("images/logo_only.png"); bg->setPosition3D({0,0,0}); // _3dLayer->addChild(bg); bg->setScale(0.5f); // cubepack CubeCenter::get()->initWithTest(); for (int i = 0; i < CubeCenter::get()->cubePack.cubes.size(); i++) { Cube cube =CubeCenter::get()->cubePack.cubes[i]; auto sp3d = Sprite3D::create("3d/jingbix.c3b"); float length_scale = 10.f; sp3d->setPosition3D(Vec3{static_cast<float>(cube.x), static_cast<float>(cube.y), static_cast<float>(cube.z)}*length_scale); sp3d->setScale(4.f); _3dLayer->addChild(sp3d); } // cube sprite auto cubeSprite = CubeSprite::create(Vec3(0,0,0), 0); cubeSprite->setPosition3D({0,0,20}); cubeSprite->setScale(2.f); _3dLayer->addChild(cubeSprite); // camera _camera = Camera::createPerspective(60, size.width/size.height, 1, 1000); _camera->setPosition3D({0, 0, 200}); _camera->lookAt({0,0,0}); _camera->setCameraFlag(CameraFlag::USER1); _3dLayer->addChild(_camera); _3dLayer->setCameraMask((unsigned short)CameraFlag::USER1); // UI layer _uiLayer = EditorUILayer::create(); this->addChild(_uiLayer, 2); // state label _stateLabel = Label::createWithTTF("state string", "fonts/consola.ttf", 14); _stateLabel->setPosition(Vec2{size.width*0.1f,size.height*0.9f}); _uiLayer->addChild(_stateLabel, 0); // keyboard _keyboardListener = EventListenerKeyboard::create(); _keyboardListener->onKeyPressed = [&](EventKeyboard::KeyCode code, Event* event) { switch (code) { case EventKeyboard::KeyCode::KEY_SPACE: CCLOG("key space, shot"); //TODO break; case EventKeyboard::KeyCode::KEY_W: case EventKeyboard::KeyCode::KEY_CAPITAL_W: CCLOG("key W down"); _zoomIn = true; break; case EventKeyboard::KeyCode::KEY_S: case EventKeyboard::KeyCode::KEY_CAPITAL_S: CCLOG("key S down"); _zoomOut = true; break; case EventKeyboard::KeyCode::KEY_A: case EventKeyboard::KeyCode::KEY_CAPITAL_A: CCLOG("key A down"); _left = true; break; case EventKeyboard::KeyCode::KEY_D: case EventKeyboard::KeyCode::KEY_CAPITAL_D: CCLOG("key D down"); _right = true; break; case EventKeyboard::KeyCode::KEY_Q: case EventKeyboard::KeyCode::KEY_CAPITAL_Q: CCLOG("key Q down"); _up = true; break; case EventKeyboard::KeyCode::KEY_E: case EventKeyboard::KeyCode::KEY_CAPITAL_E: CCLOG("key E down"); _down = true; break; case EventKeyboard::KeyCode::KEY_UP_ARROW: up(); break; case EventKeyboard::KeyCode::KEY_DOWN_ARROW: down(); break; case EventKeyboard::KeyCode::KEY_LEFT_ARROW: left(); break; case EventKeyboard::KeyCode::KEY_RIGHT_ARROW: right(); break; default: break; } }; _keyboardListener->onKeyReleased = [&](EventKeyboard::KeyCode code, Event* event) { switch (code) { case EventKeyboard::KeyCode::KEY_SPACE: CCLOG("key space, shot"); //TODO break; case EventKeyboard::KeyCode::KEY_W: case EventKeyboard::KeyCode::KEY_CAPITAL_W: CCLOG("key W up"); _zoomIn = false; break; case EventKeyboard::KeyCode::KEY_S: case EventKeyboard::KeyCode::KEY_CAPITAL_S: CCLOG("key S up"); _zoomOut = false; break; case EventKeyboard::KeyCode::KEY_A: case EventKeyboard::KeyCode::KEY_CAPITAL_A: CCLOG("key A up"); _left = false; break; case EventKeyboard::KeyCode::KEY_D: case EventKeyboard::KeyCode::KEY_CAPITAL_D: CCLOG("key D up"); _right = false; break; case EventKeyboard::KeyCode::KEY_Q: case EventKeyboard::KeyCode::KEY_CAPITAL_Q: CCLOG("key Q up"); _up = false; break; case EventKeyboard::KeyCode::KEY_E: case EventKeyboard::KeyCode::KEY_CAPITAL_E: CCLOG("key E up"); _down = false; break; // case EventKeyboard::KeyCode::KEY_UP_ARROW: // up(); // break; // case EventKeyboard::KeyCode::KEY_DOWN_ARROW: // down(); // break; // case EventKeyboard::KeyCode::KEY_LEFT_ARROW: // left(); // break; // case EventKeyboard::KeyCode::KEY_RIGHT_ARROW: // right(); // break; default: break; } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(_keyboardListener, this); // mouse _mouseListener = EventListenerMouse::create(); _mouseListener->onMouseMove = [&](Event *event) { if (!_isFPS) return; EventMouse* e = (EventMouse*)event; auto now = e->getLocation(); Vec2 diff = now - _fpsAnchor; _fpsAnchor = now; _rotateY -= ROTATE_SCALE*diff.x; _rotateX -= ROTATE_SCALE*diff.y; if (_rotateX > UP_DOWN_MAX*0.5f*PI) _rotateX = UP_DOWN_MAX*0.5f*PI; if (_rotateX < -UP_DOWN_MAX*0.5f*PI) _rotateX = -UP_DOWN_MAX*0.5f*PI; }; _mouseListener->onMouseUp = [&](Event *event) { EventMouse* e = (EventMouse*)event; switch(e->getMouseButton()) { case MOUSE_BUTTON_LEFT: break; case MOUSE_BUTTON_RIGHT: _isFPS = false; break; default: break; } }; _mouseListener->onMouseDown = [&](Event *event) { EventMouse* e = (EventMouse*)event; switch(e->getMouseButton()) { case MOUSE_BUTTON_LEFT: break; case MOUSE_BUTTON_RIGHT: { _isFPS = true; _fpsAnchor = e->getLocation(); auto ro = _camera->getRotation3D(); CCLOG("%f,%f,%f", ro.x, ro.y, ro.z); break; } default: break; } }; _mouseListener->onMouseScroll = [&](Event *event) { EventMouse* e = (EventMouse*)event; CCLOG("%f, %f", e->getScrollX(), e->getScrollY()); float diff = e->getScrollY(); Vec3 dir = _camera->getRotationQuat() * Vec3{0.f, 0.f, -1.f}; dir.normalize(); _camera->setPosition3D(_camera->getPosition3D() + SCALL_MOVE_SCALE * -diff * dir); }; _eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this); scheduleUpdate(); return true; }
void MenuScene::onMouseScroll(Event * event) { EventMouse * mouseEvent = static_cast<EventMouse *>(event); float deltaY = mouseEvent->getScrollY() * 6; this->moveMenuBy(deltaY); }