//------------------------------------------- bool DialogView::init(const std::string& strTitle, const std::string& strContent) { if (!Node::init()) return false; Size winSize = Director::getInstance()->getWinSize(); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); // 截断事件传递 EventListenerTouchOneByOne* eve = EventListenerTouchOneByOne::create(); eve->setSwallowTouches(true); eve->onTouchBegan = [](Touch* t, Event* e) { return true; }; Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(eve, this); // 背景 Sprite* pPlane = Sprite::create(RES::DIALOG_PLANE); pPlane->setPosition(origin + visibleSize / 2); this->addChild(pPlane); // 确认按钮 Button* pBtnOK = Button::create(RES::DIALOG_OK); pBtnOK->setPosition(Vec2(pPlane->getContentSize().width / 2, 0)); pBtnOK->addClickEventListener([=](Ref* pS) { if (onOkButtonClick) onOkButtonClick(this); }); pPlane->addChild(pBtnOK); // 标题 Text* pTextTitle = Text::create(strTitle, "", 32); pTextTitle->setPosition(Vec2(pPlane->getContentSize().width / 2, pPlane->getContentSize().height - 28)); pPlane->addChild(pTextTitle); // 内容List ListView* pListView = ListView::create(); pListView->setAnchorPoint(Vec2(0.5, 0.5)); pListView->setPosition(Vec2(pPlane->getContentSize().width/2, 146)); pListView->setContentSize(Size(pPlane->getContentSize().width - 60, 210)); pListView->setBounceEnabled(true); pPlane->addChild(pListView); // 内容Text Text* pTextContent = Text::create(strContent, "", 26); pTextContent->setTextHorizontalAlignment(TextHAlignment::CENTER); pTextContent->setTextAreaSize(Size(pListView->getContentSize().width, 0)); pTextContent->ignoreContentAdaptWithSize(false); pListView->pushBackCustomItem(pTextContent); // 播放动画 pPlane->setScaleX(0); pPlane->setScaleY(0.5); ScaleTo* pActionScale = ScaleTo::create(0.35, 1); pPlane->runAction(EaseBackOut::create(pActionScale)); return true; }