void GameResultSuccess::playWingAction(void) { auto NodeWing = (Node*)GameMainLayer::seekNodeByName(_myLayer, "NodeWing"); NodeWing->setScale(1.2f); // 右流光效果 auto imgLeftWing = Sprite::create("ccsRes/resResoutLayer/ImgWing.png"); imgLeftWing->setAnchorPoint(Vec2(0, 0.5)); Size clipSize = imgLeftWing->getContentSize(); Sprite* spark = Sprite::create("FirstUIRes/Sptigeguang.png"); spark->setScaleY(1.2f); //spark->setPosition(-clipSize.width, -50); ClippingNode* clippingLeftNode = ClippingNode::create(); NodeWing->addChild(clippingLeftNode); clippingLeftNode->setAlphaThreshold(0.05f); //设置alpha闸值 clippingLeftNode->setContentSize(clipSize); //设置尺寸大小 clippingLeftNode->setStencil(imgLeftWing); //设置模板stencil clippingLeftNode->addChild(imgLeftWing, 1); //先添加标题,会完全显示出来,因为跟模板一样大小 clippingLeftNode->addChild(spark, 2); //会被裁减 MoveTo* moveAction = MoveTo::create(1.0f, Vec2(clipSize.width, 0)); MoveTo* moveBackAction = MoveTo::create(0.01f, Vec2(-clipSize.width, 0)); spark->runAction(RepeatForever::create(Sequence::create(CCDelayTime::create(1.5f), moveAction, moveBackAction, NULL))); // 左流光效果 auto imgRightWing = Sprite::create("ccsRes/resResoutLayer/ImgWing.png"); imgRightWing->setFlipX(true); imgRightWing->setAnchorPoint(Vec2(1, 0.5)); clipSize = imgRightWing->getContentSize(); Sprite* rightspark = Sprite::create("FirstUIRes/Sptigeguang.png"); rightspark->setFlipX(true); rightspark->setScaleY(1.2f); //spark->setPosition(-clipSize.width, -50); ClippingNode* clippingRightNode = ClippingNode::create(); NodeWing->addChild(clippingRightNode); clippingRightNode->setAlphaThreshold(0.05f); //设置alpha闸值 clippingRightNode->setContentSize(clipSize); //设置尺寸大小 clippingRightNode->setStencil(imgRightWing); //设置模板stencil clippingRightNode->addChild(imgRightWing, 1); //先添加标题,会完全显示出来,因为跟模板一样大小 clippingRightNode->addChild(rightspark, 2); //会被裁减 MoveTo* moveAction1 = MoveTo::create(1.0f, Vec2(-clipSize.width, 0)); MoveTo* moveBackAction1 = MoveTo::create(0.01f, Vec2(clipSize.width, 0)); rightspark->runAction(RepeatForever::create(Sequence::create(CCDelayTime::create(1.5f), moveAction1, moveBackAction1, NULL))); }
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } visibleSize = Director::getInstance()->getVisibleSize(); winSize = Director::getInstance()->getWinSize(); origin = Director::getInstance()->getVisibleOrigin(); Sprite* bg = Sprite::create("HelloWorld.png"); bg->setPosition(visibleSize / 2); //this->addChild(bg, -1); Sprite* gameTitle = Sprite::create("game_title.png"); Size clipSize = gameTitle->getContentSize(); Sprite* spark = Sprite::create("spark.png"); spark->setPosition(-clipSize.width, 0); ClippingNode* clippingNode = ClippingNode::create(); clippingNode->setAlphaThreshold(0); clippingNode->setContentSize(clipSize); clippingNode->setPosition(visibleSize / 2); this->addChild(clippingNode); clippingNode->setStencil(gameTitle); //设置模板 clippingNode->addChild(gameTitle, 1); //先添加标题,会完全显示出来,因为跟模板一样大小 clippingNode->addChild(spark,2); //会被裁减 MoveTo* moveAction = MoveTo::create(2.0f, Vec2(clipSize.width, 0)); MoveTo* moveBackAction = MoveTo::create(2.0f, Vec2(-clipSize.width, 0)); Sequence* seq = Sequence::create(moveAction, moveBackAction, NULL); RepeatForever* repeatAction = RepeatForever::create(seq); spark->runAction(repeatAction); //进行左右移动的重复动作 return true; }
void GLView::render() { m_render = Director::getInstance()->getRenderer(); initTexture2d(); ClippingNode* clippingNode = ClippingNode::create(); Sprite* stencil = Sprite::createWithFileName("E://5.png"); Sprite* back = Sprite::createWithFileName("E://3.png"); // back->setPosition(200, 10); stencil->setPosition(200, 10); clippingNode->setSprite(back); clippingNode->setStencil(stencil); clippingNode->setAlpha(1.0); bool saveImage = false; //截图功能 RenderTexure bool testClippingNode = false; //遮罩功能ClippingNode bool testDrawNodePoint = false; //DrawNode功能之画点 bool testDrawNodeLine = true; //DrawNode功能之画线 /* Loop until the user closes the window */ while (!glfwWindowShouldClose(_mainWindow)) { glClearColor(0.2, 0.2, 0.2, 1); glClear(GL_COLOR_BUFFER_BIT); if (saveImage) { /* 测试 RenderTexture Size size = Director::getInstance()->getWinSize(); RenderTexture* renderTexure = RenderTexture::create(20,20); renderTexure->begin(); renderTexure->end(); renderTexure->onBegin(); for (Sprite* sprite : _sprites) { sprite->setPosition(20, 20); sprite->visit(&m_render); sprite->setPosition(0, 0); } m_render.draw(); renderTexure->onEnd(); renderTexure->saveToFile("1.png"); saveImage = false; CC_SAFE_DELETE(renderTexure);*/ } else if (testClippingNode){ /* 测试ClippingNode auto _director = Director::getInstance(); clippingNode->onBeforeVisit(); stencil->visit(&m_render); m_render.draw(); clippingNode->onAfterVisitStencil(); back->visit(&m_render); m_render.draw(); clippingNode->onAfterVisit();*/ } else if (testDrawNodePoint) { DrawNode* drawNode = DrawNode::create(); CHECK_GL_ERROR_DEBUG(); for (int i = 1; i <= 100; i++) { drawNode->drawPoint(Vec2(100+i, 100), 1, Color4F(255.0, 0, 0, 255.0)); } drawNode->onDrawPoinit(); // CHECK_GL_ERROR_DEBUG(); }else if (testDrawNodeLine) { DrawNode* drawNode = DrawNode::create(); CHECK_GL_ERROR_DEBUG(); drawNode->drawLine(Vec2(100, 100), Vec2(200, 200), Color4F(255.0, 0, 0, 255.0)); drawNode->drawLine(Vec2(100, 200), Vec2(200, 100), Color4F(255.0, 0, 0, 255.0)); drawNode->onDrawLine(); } else{ for (Sprite* sprite : _sprites) { sprite->visit(&m_render); } m_render.draw(); } /* Swap front and back buffers */ glfwSwapBuffers(_mainWindow); /* Poll for and process events */ glfwPollEvents(); } }
bool ExorbitanceScene::init() { if(!Layer::init()) { return false; } SpriteFrameCache::getInstance()->addSpriteFramesWithFile(HERO_PICTURE_PLIST); std::string df = FileUtils::getInstance()->getWritablePath() + SAVEYOURSISTERSQL; if(!FileUtils::getInstance()->isFileExist(df)) { log("There is a sqlite!"); } else { std::string fe = FileUtils::getInstance()->fullPathForFilename(SAVEYOURSISTERSQL); std::string df = FileUtils::getInstance()->getWritablePath() + SAVEYOURSISTERSQL; log("database path == %s", df.c_str()); fileCopy(fe.c_str(),df.c_str()); } //数据库操作 opendb(); querySkillDb(); queryHeroDb(); queryGearDb(); //开始界面显示 Size vSize = Director::getInstance()->getVisibleSize(); //背景 Sprite * ground = Sprite::create("startground.png"); ground->setPosition(vSize/2); this->addChild(ground); //进入游戏按钮实现 Vec2 vOrigin = Director::getInstance()->getVisibleOrigin(); ClippingNode * cl = ClippingNode::create(); cl->setAlphaThreshold(0.5f); cl->setAnchorPoint(Vec2(0.5,0.5)); this->addChild(cl); auto l1 = Label::createWithTTF("SAVE,YOUR,SISTER","Marker Felt.ttf",80,Size::ZERO, TextHAlignment::CENTER); l1->setColor(Color3B::BLACK); l1->setPosition(400,500); cl->addChild(l1); auto sp = Sprite::create("Orb_Icons_003.png"); sp->setPosition(l1->getPosition().x - l1->getContentSize().width/2,l1->getPositionY()); cl->setStencil(sp); auto mv = MoveBy::create(fabsf(vSize.width/100),Vec2(vSize.width-l1->getPositionX(),0)); sp->runAction(RepeatForever::create(Sequence::create(mv,mv->reverse(),NULL))); auto bg = Sprite::create("jnm.png"); bg->setPosition(300,300); this->addChild(bg); auto lb = Label::createWithTTF("Please Click On The Screen","Marker Felt.ttf",30,Size::ZERO, TextHAlignment::CENTER); lb->setPosition(600,300); lb->setColor(Color3B::BLACK); lb->runAction(RepeatForever::create(Sequence::create(FadeIn::create(0.8),FadeOut::create(0.8),NULL))); this->addChild(lb); auto listen = EventListenerTouchOneByOne::create(); listen->onTouchBegan = [=](Touch *t,Event *e) { auto scene = StartScene::createScene(); Director::getInstance()->replaceScene(scene); SimpleAudioEngine::getInstance()->playEffect("select.wav"); return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listen,this); return true; }