// on "init" you need to initialize your instance bool StatusDisplay::init(GameState* gameState) { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } auto director = Director::getInstance(); auto glview = director->getOpenGLView(); glview->setDesignResolutionSize(320, 480, ResolutionPolicy::SHOW_ALL); Size visibleSize = director->getVisibleSize(); Vec2 origin = director->getVisibleOrigin(); auto spriteCache = SpriteFrameCache::getInstance(); spriteCache->addSpriteFramesWithFile("sprites_default.plist"); auto player = Sprite::createWithSpriteFrameName("mario_00.png"); player->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2 - player->getContentSize().height)); addChild(player); auto action = Sequence::create(DelayTime::create(1), CallFunc::create([gameState](){Director::getInstance()->replaceScene(HelloWorld::createScene(gameState));}), NULL); runAction(action); return true; }
bool GameScene::init() { if (!Layer::init()) { return false; } auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); Point origin = director->getVisibleOrigin(); ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object auto closeItem = MenuItemImage::create( "CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(GameScene::menuCloseCallback, this)); closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2)); // create menu, it's an autorelease object auto menu = Menu::create(closeItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu, 1); _field = Field::create(); this->addChild(_field, 10); Director::getInstance()->getScheduler()->scheduleUpdate(this, 0, false); return true; }
// helpers bool Renderer::checkVisibility(const Mat4 &transform, const Size &size) { auto scene = Director::getInstance()->getRunningScene(); //If draw to Rendertexture, return true directly. // only cull the default camera. The culling algorithm is valid for default camera. if (!scene || (scene && scene->_defaultCamera != Camera::getVisitingCamera())) return true; auto director = Director::getInstance(); Rect visiableRect(director->getVisibleOrigin(), director->getVisibleSize()); // transform center point to screen space float hSizeX = size.width/2; float hSizeY = size.height/2; Vec3 v3p(hSizeX, hSizeY, 0); transform.transformPoint(&v3p); Vec2 v2p = Camera::getVisitingCamera()->projectGL(v3p); // convert content size to world coordinates float wshw = std::max(fabsf(hSizeX * transform.m[0] + hSizeY * transform.m[4]), fabsf(hSizeX * transform.m[0] - hSizeY * transform.m[4])); float wshh = std::max(fabsf(hSizeX * transform.m[1] + hSizeY * transform.m[5]), fabsf(hSizeX * transform.m[1] - hSizeY * transform.m[5])); // enlarge visable rect half size in screen coord visiableRect.origin.x -= wshw; visiableRect.origin.y -= wshh; visiableRect.size.width += wshw * 2; visiableRect.size.height += wshh * 2; bool ret = visiableRect.containsPoint(v2p); return ret; }
bool Box2dTestBed::initWithEntryID(int entryId) { if (!TestCase::init()) { return false; } auto director = Director::getInstance(); Vec2 visibleOrigin = director->getVisibleOrigin(); Size visibleSize = director->getVisibleSize(); m_entryID = entryId; Box2DView* view = Box2DView::viewWithEntryID( entryId ); addChild(view, 0, kTagBox2DNode); view->setScale(15); view->setAnchorPoint( Vec2(0,0) ); view->setPosition(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/3); auto label = Label::createWithTTF(view->title().c_str(), "fonts/arial.ttf", 28); addChild(label, 1); label->setPosition(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height-50); // Adds touch event listener auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(Box2dTestBed::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(Box2dTestBed::onTouchMoved, this); _eventDispatcher->addEventListenerWithFixedPriority(listener, 1); _touchListener = listener; return true; }
bool IntroScene::init() { if (!Scene::init()) { return false; } srand(std::time(0)); auto layer = Layer::create(); auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); Vec2 visibleOrigin = director->getVisibleOrigin(); Vec2 center = Vec2(visibleSize.width / 2 + visibleOrigin.x, visibleSize.height / 2 + visibleOrigin.y); auto introImage = Sprite::create(IMG_INTRO); float scaleX = visibleSize.width / introImage->getContentSize().width; float scaleY = visibleSize.height / introImage->getContentSize().height; introImage->setPosition(center); introImage->setScale(scaleX, scaleY); layer->addChild(introImage); this->addChild(layer); this->schedule(schedule_selector(IntroScene::loadResources)); return true; }
Rect GLView::getVisibleRect() const { Rect ret; ret.size = getVisibleSize(); ret.origin = getVisibleOrigin(); return ret; }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } Size winsize = director->getVisibleSize(); double ratio = winsize.width / winsize.height; if(ratio >= 1.775){ glview->setDesignResolutionSize(1136,640,ResolutionPolicy::SHOW_ALL); }else if(ratio > 1.5){ glview->setDesignResolutionSize(640*ratio,640,ResolutionPolicy::SHOW_ALL); }else{ glview->setDesignResolutionSize(960,640,ResolutionPolicy::SHOW_ALL); } // 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 = GameMainMenu::scene(); // run director->runWithScene(scene); return true; }
void VisibleRect::lazyInit() { if (_visibleRect.size.width == 0.0f && _visibleRect.size.height == 0.0f) { auto director = Director::getInstance(); _visibleRect.origin = director->getVisibleOrigin(); _visibleRect.size = director->getVisibleSize(); } }
bool MainScene::init() { if (!Layer::init()) return false; auto director = Director::getInstance(); auto pView = director->getOpenGLView(); pView->setDesignResolutionSize(RESOLUTION_WIDTH, RESOLUTION_HEIGHT, ResolutionPolicy::SHOW_ALL); Size visibleSize = director->getVisibleSize(); Vec2 origin = director->getVisibleOrigin(); //Title 'Kid Sudoku' auto labelTitle = Label::createWithTTF("Kid Remember It", "fonts/Marker Felt.ttf", 188); labelTitle->setTextColor(Color4B(0xe3, 0x54, 0xf4, 0xff)); labelTitle->setPosition(Vec2(origin.x + visibleSize.width / 2, origin.y + visibleSize.height - labelTitle->getContentSize().height/2 - 40) ); this->addChild(labelTitle); //Cool Papa-Legend announcement auto labelAnn = Label::createWithTTF("Cool Papa-Legend : Produce product for our kids.", "fonts/Marker Felt.ttf", 30); labelAnn->setTextColor(Color4B(0x00, 0xff, 0x00, 0xff)); labelAnn->setPosition(Vec2(origin.x + visibleSize.width / 2, labelTitle->getPosition().y - labelTitle->getContentSize().height/2 - 60 - labelAnn->getContentSize().height / 2) ); this->addChild(labelAnn); //Campaign Button auto btnPlay = ui::Button::create("btn-menu-0.png", "btn-menu-1.png", "btn-menu-2.png"); btnPlay->setScale9Enabled(true); btnPlay->setCapInsets(Rect(15, 15, 4, 4)); btnPlay->setTitleText("Play"); btnPlay->setTitleFontSize(40); btnPlay->setContentSize(Size(300, 90)); btnPlay->setPosition(Vec2(origin.x + visibleSize.width / 2, labelAnn->getPosition().y - labelAnn->getContentSize().height / 2 - 140 - btnPlay->getContentSize().height/2) ); btnPlay->addClickEventListener(CC_CALLBACK_1(MainScene::onMenuPlayClicked, this)); this->addChild(btnPlay, 1); //Exit Button auto btnExit = ui::Button::create("btn-menu-0.png", "btn-menu-1.png", "btn-menu-2.png"); btnExit->setScale9Enabled(true); btnExit->setCapInsets(Rect(15, 15, 4, 4)); btnExit->setTitleText("Exit"); btnExit->setTitleFontSize(40); btnExit->setContentSize(Size(300, 90)); btnExit->setPosition(Vec2(origin.x + visibleSize.width / 2, btnPlay->getPosition().y - btnPlay->getContentSize().height / 2 - 40 - btnExit->getContentSize().height/2) ); btnExit->addClickEventListener(CC_CALLBACK_1(MainScene::onMenuExitClicked, this)); this->addChild(btnExit, 1); return true; }
void Game::initGUI() { auto director = CCDirector::sharedDirector(); auto visibleSize = director->getVisibleSize(); initStatusBar(visibleSize); initInventory(visibleSize); addMenu(visibleSize); }
Vec2 GameLayer::_getViewPoint(Vec2 position) { float width = getVisibleOrigin().x + getVisibleSize().width; float height = getVisibleOrigin().y + getVisibleSize().height; int x = MAX(position.x, width * 0.5f); int y = MAX(position.y, height * 0.5f); x = MIN(x, _map_size.width - width * 0.5f + visibleOrigin.x); y = MIN(y, _map_size.height - height * 0.5f + visibleOrigin.y); Vec2 actualPosition = Vec2(x, y); Vec2 centerOfView = Vec2(width * 0.5f, height * 0.5f); Vec2 viewPoint; Vec2::subtract(centerOfView, actualPosition, &viewPoint); return viewPoint; }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } // turn on display FPS director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); AppDelegate::SCREEN_SCALE_FACTOR = director->getVisibleSize().width / 960.0f; AppDelegate::SCREEN_WIDTH = director->getWinSizeInPixels().width; AppDelegate::SCREEN_HEIGHT = director->getWinSize().height; std::vector<std::string> searchPath; if (AppDelegate::SCREEN_HEIGHT > 768) { searchPath.push_back("HDR"); CCLOG("Using HDR Directory"); //pDirector->setContentScaleFactor(MAX(AppDelegate::SCREEN_WIDTH/2048.0f, AppDelegate::SCREEN_HEIGHT/1536.0f)); } else if (AppDelegate::SCREEN_HEIGHT > 320) { searchPath.push_back("HD"); //pDirector->setContentScaleFactor(MIN(AppDelegate::SCREEN_WIDTH/1024.0f, AppDelegate::SCREEN_HEIGHT/768.0f)); CCLOG("Using HD Directory with scaleFactor = %f", director->getContentScaleFactor()); //CCEGLView::sharedOpenGLView()->setDesignResolutionSize(AppDelegate::SCREEN_WIDTH, AppDelegate::SCREEN_HEIGHT, kResolutionNoBorder); } else { searchPath.push_back("SD"); CCLOG("Using SD Directory"); //pDirector->setContentScaleFactor(AppDelegate::SCREEN_HEIGHT/320.0f); } FileUtils::getInstance()->setSearchPaths(searchPath); // create a scene. it's an autorelease object auto *pScene = SplashScene::scene(); //auto *pScene = HelloWorld::createScene(); // run director->runWithScene(pScene); EziSocialObject::sharedObject()->setAutoCheckIncomingRequestsOnAppLaunch(false); return true; }
void ClippingToRenderTextureTest::reproduceBug() { auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); Point origin = director->getVisibleOrigin(); // add "HelloWorld" splash screen" auto sprite = Sprite::create("Images/grossini.png"); // position the sprite on the center of the screen sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); // container node that will contain the clippingNode auto container = Node::create(); container->retain(); auto stencil = DrawNode::create(); Point triangle[3]; triangle[0] = Point(-50, -50); triangle[1] = Point(50, -50); triangle[2] = Point(0, 50); Color4F green(0, 1, 0, 1); stencil->drawPolygon(triangle, 3, green, 0, green); auto clipper = ClippingNode::create(); clipper->setAnchorPoint(Point(0.5, 0.5)); clipper->setPosition( Point(visibleSize.width/2, visibleSize.height/2) ); clipper->setStencil(stencil); clipper->setInverted(true); container->addChild(clipper, 1); auto img = DrawNode::create(); triangle[0] = Point(-200, -200); triangle[1] = Point(200, -200); triangle[2] = Point(0, 200); Color4F red(1, 0, 0, 1); img->drawPolygon(triangle, 3, red, 0, red); clipper->addChild(img); // container rendered on Texture the size of the screen and because Clipping node use stencil buffer so we need to // create RenderTexture with depthStencil format parameter RenderTexture* rt = RenderTexture::create(visibleSize.width, visibleSize.height, Texture2D::PixelFormat::RGBA8888, GL_DEPTH24_STENCIL8); rt->setPosition(visibleSize.width/2, visibleSize.height/2); this->addChild(rt); rt->begin(); container->visit(); rt->end(); }
void VisibleRect::lazyInit() { if (s_visibleRect.size.width == 0.0f && s_visibleRect.size.height == 0.0f) { auto director = Director::getInstance(); //auto pEGLView = director->getOpenGLView(); //GLView* pEGLView = GLView:: :: GLView::sharedOpenGLView(); s_visibleRect.origin = director->getVisibleOrigin(); s_visibleRect.size = director->getVisibleSize(); } }
bool MenuLayer::initWithEntryID(int entryId) { auto director = Director::getInstance(); Point visibleOrigin = director->getVisibleOrigin(); Size visibleSize = director->getVisibleSize(); m_entryID = entryId; setTouchEnabled( true ); setTouchMode(Touch::DispatchMode::ONE_BY_ONE); Box2DView* view = Box2DView::viewWithEntryID( entryId ); addChild(view, 0, kTagBox2DNode); view->setScale(15); view->setAnchorPoint( Point(0,0) ); view->setPosition( Point(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/3) ); //#if (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE) // auto label = LabelBMFont::create(view->title().c_str(), "fonts/arial16.fnt"); //#else auto label = LabelTTF::create(view->title().c_str(), "Arial", 28); //#endif addChild(label, 1); label->setPosition( Point(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height-50) ); auto item1 = MenuItemImage::create("Images/b1.png", "Images/b2.png", CC_CALLBACK_1(MenuLayer::backCallback, this) ); auto item2 = MenuItemImage::create("Images/r1.png","Images/r2.png", CC_CALLBACK_1( MenuLayer::restartCallback, this) ); auto item3 = MenuItemImage::create("Images/f1.png", "Images/f2.png", CC_CALLBACK_1(MenuLayer::nextCallback, this) ); auto menu = Menu::create(item1, item2, item3, NULL); menu->setPosition( Point::ZERO ); item1->setPosition(Point(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); item2->setPosition(Point(VisibleRect::center().x, VisibleRect::bottom().y+item2->getContentSize().height/2)); item3->setPosition(Point(VisibleRect::center().x + item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); addChild(menu, 1); // Removes touch event listener EventDispatcher::getInstance()->removeEventListener(_touchListener); // Adds touch event listener auto listener = EventListenerTouch::create(Touch::DispatchMode::ONE_BY_ONE); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(MenuLayer::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(MenuLayer::onTouchMoved, this); EventDispatcher::getInstance()->addEventListenerWithFixedPriority(listener, 1); _touchListener = listener; return true; }
ButtonControlLayer::ButtonControlLayer(Level* level) { Layer::init(); _level = level; _selectedItem = nullptr; _selectedWithCamera = nullptr; memset(_states, 0, sizeof(ButtonState) * 4); auto director = cocos2d::Director::getInstance(); auto winSize = director->getWinSize(); cocos2d::Rect screenBounds(director->getVisibleOrigin(), director->getVisibleSize()); auto southItem = cocos2d::MenuItemSprite::create(cocos2d::Sprite::createWithSpriteFrameName("ui-button-control.png"), cocos2d::Sprite::createWithSpriteFrameName("ui-button-control-on.png")); southItem->setScale(1, -1); southItem->setTag(static_cast<int>(Direction::SOUTH)); southItem->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); southItem->setPosition(cocos2d::Vec2(screenBounds.origin.x + 61.5f, screenBounds.origin.y + 94.5f)); addChild(southItem); auto westItem = cocos2d::MenuItemSprite::create(cocos2d::Sprite::createWithSpriteFrameName("ui-button-control.png"), cocos2d::Sprite::createWithSpriteFrameName("ui-button-control-on.png")); westItem->setTag(static_cast<int>(Direction::WEST)); westItem->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); westItem->setPosition(cocos2d::Vec2(screenBounds.origin.x + 61.5f, screenBounds.origin.y + 202.5f)); addChild(westItem); auto northItem = cocos2d::MenuItemSprite::create(cocos2d::Sprite::createWithSpriteFrameName("ui-button-control.png"), cocos2d::Sprite::createWithSpriteFrameName("ui-button-control-on.png")); northItem->setScale(-1, 1); northItem->setTag(static_cast<int>(Direction::NORTH)); northItem->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); northItem->setPosition(cocos2d::Vec2(screenBounds.origin.x + screenBounds.size.width - 61.5f, screenBounds.origin.y + 202.5f)); addChild(northItem); auto eastItem = cocos2d::MenuItemSprite::create(cocos2d::Sprite::createWithSpriteFrameName("ui-button-control.png"), cocos2d::Sprite::createWithSpriteFrameName("ui-button-control-on.png")); eastItem->setScale(-1, -1); eastItem->setTag(static_cast<int>(Direction::EAST)); eastItem->setAnchorPoint(cocos2d::Vec2(0.5f, 0.5f)); eastItem->setPosition(cocos2d::Vec2(screenBounds.origin.x + screenBounds.size.width - 61.5f, screenBounds.origin.y + 94.5f)); addChild(eastItem); auto touchListener = cocos2d::EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(true); touchListener->onTouchBegan = CC_CALLBACK_2(ButtonControlLayer::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(ButtonControlLayer::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(ButtonControlLayer::onTouchEnded, this); touchListener->onTouchCancelled = CC_CALLBACK_2(ButtonControlLayer::onTouchEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); }
void ClippingToRenderTextureTest::expectedBehaviour() { auto director = Director::getInstance(); Size visibleSize = director->getVisibleSize(); Point origin = director->getVisibleOrigin(); // add "HelloWorld" splash screen" auto sprite = Sprite::create("Images/grossini.png"); // position the sprite on the center of the screen sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(sprite, 0); sprite->setName("remove me 0"); // container node that will contain the clippingNode auto container = Node::create(); this->addChild(container); container->setName("remove me 1"); auto stencil = DrawNode::create(); Point triangle[3]; triangle[0] = Point(-50, -50); triangle[1] = Point(50, -50); triangle[2] = Point(0, 50); Color4F green(0, 1, 0, 1); stencil->drawPolygon(triangle, 3, green, 0, green); auto clipper = ClippingNode::create(); clipper->setAnchorPoint(Point(0.5, 0.5)); clipper->setPosition( Point(visibleSize.width/2, visibleSize.height/2) ); clipper->setStencil(stencil); clipper->setInverted(true); container->addChild(clipper, 1); auto img = DrawNode::create(); triangle[0] = Point(-200, -200); triangle[1] = Point(200, -200); triangle[2] = Point(0, 200); Color4F red(1, 0, 0, 1); img->drawPolygon(triangle, 3, red, 0, red); clipper->addChild(img); }
bool MenuLayer::initWithEntryID(int entryId) { auto director = Director::getInstance(); Vec2 visibleOrigin = director->getVisibleOrigin(); Size visibleSize = director->getVisibleSize(); m_entryID = entryId; Box2DView* view = Box2DView::viewWithEntryID( entryId ); addChild(view, 0, kTagBox2DNode); view->setScale(15); view->setAnchorPoint( Vec2(0,0) ); view->setPosition( Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/3) ); auto label = Label::createWithTTF(view->title().c_str(), "fonts/arial.ttf", 28); addChild(label, 1); label->setPosition( Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height-50) ); auto item1 = MenuItemImage::create("Images/b1.png", "Images/b2.png", CC_CALLBACK_1(MenuLayer::backCallback, this) ); auto item2 = MenuItemImage::create("Images/r1.png","Images/r2.png", CC_CALLBACK_1( MenuLayer::restartCallback, this) ); auto item3 = MenuItemImage::create("Images/f1.png", "Images/f2.png", CC_CALLBACK_1(MenuLayer::nextCallback, this) ); auto menu = Menu::create(item1, item2, item3, nullptr); menu->setPosition( Vec2::ZERO ); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); item2->setPosition(Vec2(VisibleRect::center().x, VisibleRect::bottom().y+item2->getContentSize().height/2)); item3->setPosition(Vec2(VisibleRect::center().x + item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); addChild(menu, 1); // Adds touch event listener auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); listener->onTouchBegan = CC_CALLBACK_2(MenuLayer::onTouchBegan, this); listener->onTouchMoved = CC_CALLBACK_2(MenuLayer::onTouchMoved, this); _eventDispatcher->addEventListenerWithFixedPriority(listener, 1); _touchListener = listener; return true; }
bool PlayerPlane::initWithParent(cocos2d::Node * parent) { if (!parent) return false; bool ret = this->init(); auto director = Director::getInstance(); auto visibleSize = director->getVisibleSize(); Vec2 origin = director->getVisibleOrigin(); _rectVisible = Rect(origin.x, origin.y, visibleSize.width, visibleSize.height); parent->addChild(this); this->runAction(MoveTo::create(1.0f, Vec2(visibleSize.width/2, visibleSize.height/4))); // register touches event auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = [&](const std::vector<Touch*>& touches, Event *unused_event) { _bIsTouching = true; _vFigherPositionDelta = Vec2::ZERO; }; listener->onTouchesMoved = [&](const std::vector<Touch*>& touches, Event *unused_event) { if (_bIsTouching && !touches.empty()) _vFigherPositionDelta += touches.front()->getDelta(); }; listener->onTouchesEnded = [&](const std::vector<Touch*>& touches, Event *unused_event) { _bIsTouching = false; }; listener->onTouchesCancelled = [&](const std::vector<Touch*>& touches, Event *unused_event) { _bIsTouching = false; }; director->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, parent); scheduleUpdate(); return ret; }
bool TetrisGameAreaLayer::init() { LayerColor::initWithColor(Color4B(255, 100, 100, 255)); auto keyListener = EventListenerKeyboard::create(); keyListener->setEnabled(true); keyListener->onKeyReleased = std::bind(&TetrisGameAreaLayer::onKeyReleased, this, std::placeholders::_1,std::placeholders::_2); keyListener->onKeyPressed = std::bind(&TetrisGameAreaLayer::onKeyDown, this, std::placeholders::_1, std::placeholders::_2); _eventDispatcher->addEventListenerWithSceneGraphPriority(keyListener, this); auto dtor = Director::getInstance(); Size vSize = dtor->getVisibleSize(); Vec2 org = dtor->getVisibleOrigin(); //left bottom Vec2 vlb(org.x + KWBorder, org.y + KHBorder); int areaHeight = vSize.height * KAreaHRationInVisible; setContentSize(Size(areaHeight / 2 - 2 * KWBorder, areaHeight - 4 * KWBorder)); setAnchorPoint(Vec2(0 ,0)); setPosition(vlb); initBlockRectSprite(); //schedule(schedule_selector(TetrisGameAreaLayer::onBlockUpdate), 0.0); scheduleUpdate(); return true; }
bool Game::init() { if (!CCLayer::init()) { return false; } auto director = CCDirector::sharedDirector(); auto visibleSize = director->getVisibleSize(); score = 0; board = Board::create(6, 6); board->addListener(this); addChild(board); bonusLayer = BonusLayer::create(); bonusLayer->setPosition( ccp(VisibleRect::left().x, VisibleRect::rightTop().y - visibleSize.height / 7 - bonusLayer->getContentSize().height)); bonusLayer->setVisible(false); addChild(bonusLayer, 2); gameSpice = GameSpice::getInstance(); gameSpice->getInventory([&] (Inventory inventory) { auto items = inventory.getItems(); swapRemaining = items.at(SWAP_BONUS_IDENTIFIER).getQuantity(); removeRemaining = items.at(REMOVE_BONUS_IDENTIFIER).getQuantity(); changeRemaining = items.at(CHANGE_BONUS_IDENTIFIER).getQuantity(); initGUI(); timer = CountDownTimer::create(1.0f, LEVEL_TIME); timer->retain(); timer->addDelegate(this); timer->start(); }); return true; }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } #ifdef _DEBUG // turn on display FPS director->setDisplayStats(true); #endif // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); glview->setDesignResolutionSize(1024, 768, ResolutionPolicy::FIXED_HEIGHT); Size winSize = director->getVisibleSize(); if (winSize.height > 768) { director->setContentScaleFactor(2.0); } else { director->setContentScaleFactor(1.0); } glClearColor(1, 1, 1, 1.0); // create a scene. it's an autorelease object auto scene = MainMenuScene::create(); // run director->runWithScene(scene); return true; }
void GraphDisplay::drawBackground(GlInterface &gl) { Display::drawBackground(gl); //Draw standard scale as the background GPoint v_origin = getVisibleOrigin(gl); GVec v_size = getVisibleSize(gl); GPoint prev_lines( floor(v_origin.x/standardUnitSize.x)*standardUnitSize.x, floor(v_origin.y/standardUnitSize.y)*standardUnitSize.y); APoint start_lines = graphToAbsolutePoint(prev_lines + standardUnitSize); AVec line_step = graphToAbsoluteVec(standardUnitSize); //Vertical lines (x dimension) --> GREY gl.setColor(Color(0.4f, 0.4f, 0.4f, 1.0f)); for(float a_x = start_lines.x; a_x < v_size.x; a_x += line_step.x) gl.drawLine(APoint(a_x, 0.0f), APoint(a_x, size.y)); //Horizontal lines (y dimension) --> GREY gl.setColor(Color(0.4f, 0.4f, 0.4f, 1.0f)); for(float a_y = start_lines.y; a_y < v_size.y; a_y += line_step.y) gl.drawLine(APoint(0.0f, a_y), APoint(size.x, a_y)); }
virtual bool init() override { this->Layer::init(); Resource::Load(); auto director = cocos2d::Director::getInstance(); auto visibleSize = director->getVisibleSize(); auto background = cocos2d::Sprite::create(Resource::WELCOME_BACKGROUND); auto newGame = cocos2d::ui::Button::create(Resource::BUTTON_NEWGAME); auto logoMaples = cocos2d::Sprite::create(Resource::LOGO_MAPLE); this->player = Fighter::Create(cocos2d::Point(visibleSize.width * 0.2, visibleSize.height * 0.2)); logoMaples->setPosition(cocos2d::Point(visibleSize.width * 0.5, visibleSize.height * 0.7)); logoMaples->setBlendFunc(cocos2d::BlendFunc::ADDITIVE); background->setPosition(cocos2d::Point::ZERO); background->setAnchorPoint(cocos2d::Point::ZERO); newGame->setPosition(cocos2d::Point(visibleSize.width * 0.5, visibleSize.height * 0.5)); newGame->addTouchEventListener([this, director](cocos2d::Ref * pSender, cocos2d::ui::Widget::TouchEventType type){ if (type == cocos2d::ui::Widget::TouchEventType::ENDED) { auto stepOne = cocos2d::CallFunc::create([this] { this->addChild(Effect::CreateFlare()); }); auto stepTwo = cocos2d::CallFunc::create([director] { auto transition = cocos2d::TransitionFade::create(2.0, HelloWorld::createScene()); director->replaceScene(transition); }); this->runAction(cocos2d::Sequence::create(stepOne, stepTwo, nullptr)); } }); auto moveToRight = cocos2d::MoveTo::create(2.0, cocos2d::Vec2(visibleSize.width * 0.2, visibleSize.height * 0.2)); auto moveToLeft = cocos2d::MoveTo::create(2.0, cocos2d::Vec2(visibleSize.width * 0.8, visibleSize.height * 0.2)); auto sequence = cocos2d::Sequence::create(moveToLeft, moveToRight, nullptr); auto playerAction = cocos2d::RepeatForever::create(sequence); this->player->runAction(playerAction); auto name = cocos2d::Label::create(); name->setString("姓名 : 刘枫林 (Maples)"); name->setPosition(cocos2d::Point(visibleSize.width * 0.5, visibleSize.height * 0.36)); auto info = cocos2d::Label::create(); info->setString("学号 : 2013060109005"); info->setPosition(cocos2d::Point(visibleSize.width * 0.5, visibleSize.height * 0.3)); this->addChild(background); this->addChild(this->player); this->addChild(logoMaples); this->addChild(newGame); this->addChild(name); this->addChild(info); this->scheduleUpdate(); return true; }
cocos2d::Rect mog::CCGame::getVisibleViewRect() const { auto origin = getVisibleOrigin(); auto viewSize = getVisibleSize(); return Rect(origin.x, origin.y, viewSize.width, viewSize.height); }
bool UIEditBoxTest::init() { if (UIScene::init()) { auto glview = Director::getInstance()->getOpenGLView(); auto visibleOrigin = glview->getVisibleOrigin(); auto visibleSize = glview->getVisibleSize(); auto pBg = Sprite::create("Images/HelloWorld.png"); pBg->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2)); addChild(pBg); _TTFShowEditReturn = Label::createWithSystemFont("No edit control return!", "Arial", 30); _TTFShowEditReturn->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y + visibleSize.height - 50)); addChild(_TTFShowEditReturn); auto editBoxSize = Size(visibleSize.width - 100, 60); // top std::string pNormalSprite = "extensions/green_edit.png"; _editName = ui::EditBox::create(editBoxSize, ui::Scale9Sprite::create(pNormalSprite)); _editName->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height*3/4)); _editName->setFontName("Paint Boy"); _editName->setFontSize(25); _editName->setFontColor(Color3B::RED); _editName->setPlaceHolder("Name:"); _editName->setPlaceholderFontColor(Color3B::WHITE); _editName->setMaxLength(8); _editName->setReturnType(ui::EditBox::KeyboardReturnType::DONE); _editName->setDelegate(this); addChild(_editName); // middle _editPassword = ui::EditBox::create(editBoxSize, "extensions/orange_edit.png"); _editPassword->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2)); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) _editPassword->setFont("American Typewriter", 30); #else _editPassword->setFont("American Typewriter", 80); _editPassword->setPlaceholderFont("American Typewriter", 80); #endif _editPassword->setFontColor(Color3B::GREEN); _editPassword->setPlaceHolder("Password:"******"extensions/yellow_edit.png"); _editEmail->setPosition(Vec2(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/4)); _editEmail->setAnchorPoint(Vec2(0.5, 1.0f)); _editEmail->setPlaceHolder("Email:"); _editEmail->setInputMode(ui::EditBox::InputMode::EMAIL_ADDRESS); _editEmail->setDelegate(this); addChild(_editEmail); this->setPosition(Vec2(10, 20)); return true; } return false; }
Scene* Chapter13::createScene() { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // some upfront items that we need // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto dirs = Director::getInstance(); Size visibleSize = dirs->getVisibleSize(); Vec2 origin = dirs->getVisibleOrigin(); Size playingSize = Size(visibleSize.width, visibleSize.height - (visibleSize.height/8)); // actual playing size to work with // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a scene // 'scene' is an autorelease object // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto scene = Scene::create(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold non-sprites. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto nodeItems = Node::create(); nodeItems->setName("nodeItems"); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold menu // create a menu // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto menuNode = Node::create(); menuNode->setName("menuNode"); int index = 2; auto menuItem1 = MenuItemFont::create("Play Music"); menuItem1->setFontNameObj("fonts/Marker Felt.ttf"); menuItem1->setFontSizeObj(32); menuItem1->setName("menuItem1"); menuItem1->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem1->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); audio->playBackgroundMusic("music.mp3"); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem1"); cnode->setVisible(false); cnode = bnode->getChildByName("menuItem2"); cnode->setVisible(true); }); auto menuItem2 = MenuItemFont::create("Stop Music"); menuItem2->setFontNameObj("fonts/Marker Felt.ttf"); menuItem2->setFontSizeObj(32); menuItem2->setName("menuItem2"); menuItem2->setVisible(false); menuItem2->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem2->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); audio->stopBackgroundMusic("music.mp3"); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem2"); cnode->setVisible(false); cnode = bnode->getChildByName("menuItem1"); cnode->setVisible(true); }); auto menuItem3 = MenuItemFont::create("Play Effect"); menuItem3->setFontNameObj("fonts/Marker Felt.ttf"); menuItem3->setFontSizeObj(32); menuItem3->setName("menuItem3"); menuItem3->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (++index) * 40)); menuItem3->setCallback([&](cocos2d::Ref *sender) { auto audio = CocosDenshion::SimpleAudioEngine::getInstance(); audio->playEffect("alert.mp3"); }); auto menu = Menu::create(menuItem1, menuItem2, menuItem3, NULL); menu->setName("menu"); menuNode->addChild(menu, 1); menu->setPosition(Vec2::ZERO); scene->addChild(menuNode, 2); // return the scene return scene; }
Scene* Chapter3::createScene() { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // some upfront items that we need // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto dirs = Director::getInstance(); Size visibleSize = dirs->getVisibleSize(); Vec2 origin = dirs->getVisibleOrigin(); Size playingSize = Size(visibleSize.width, visibleSize.height - (visibleSize.height/8)); // actual playing size to work with // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a scene // 'scene' is an autorelease object // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto scene = Scene::create(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold non-sprites. // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto nodeItems = Node::create(); nodeItems->setName("nodeItems"); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // create a node to hold menu // create a menu // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ auto menuNode = Node::create(); menuNode->setName("menuNode"); int index = 2; auto menuItem1 = MenuItemFont::create("First: Create a Sprite"); menuItem1->setFontNameObj("Marker Felt.ttf"); menuItem1->setFontSizeObj(32); menuItem1->setName("menuItem1"); menuItem1->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem1->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite1"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem1"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem2"); dnode->setVisible(true); }); auto menuItem2 = MenuItemFont::create("Next: Create a Sprite from a Rect"); menuItem2->setFontNameObj("Marker Felt.ttf"); menuItem2->setFontSizeObj(32); menuItem2->setName("menuItem2"); menuItem2->setVisible(false); menuItem2->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem2->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto newSprite = Sprite::create("Blue_Front1.png", Rect(0,0,50,50)); newSprite->setPosition(250, 256); newSprite->setName("sprite2"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem2"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem3"); dnode->setVisible(true); }); auto menuItem3 = MenuItemFont::create("Next: Create a Sprite from SpriteFrameCache"); menuItem3->setFontNameObj("Marker Felt.ttf"); menuItem3->setFontSizeObj(32); menuItem3->setName("menuItem3"); menuItem3->setVisible(false); menuItem3->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem3->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto spritecache = SpriteFrameCache::getInstance(); spritecache->addSpriteFramesWithFile("sprites.plist"); auto newSprite = Sprite::createWithSpriteFrameName("Blue_Front1.png"); newSprite->setPosition(400, 256); newSprite->setName("sprite3"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem3"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem4"); dnode->setVisible(true); }); auto menuItem4 = MenuItemFont::create("Next: Create a Sprite from SpriteFrame"); menuItem4->setFontNameObj("Marker Felt.ttf"); menuItem4->setFontSizeObj(32); menuItem4->setName("menuItem4"); menuItem4->setVisible(false); menuItem4->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem4->setCallback([&](cocos2d::Ref *sender) { auto dirs = Director::getInstance()->getRunningScene(); auto spritecache = SpriteFrameCache::getInstance(); spritecache->addSpriteFramesWithFile("sprites.plist"); auto newspriteFrame = SpriteFrame::create("Blue_Front1.png", Rect(0,0,50,50)); auto newSprite = Sprite::createWithSpriteFrame(newspriteFrame); newSprite->setPosition(550, 256); newSprite->setName("sprite4"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem4"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem5"); dnode->setVisible(true); }); auto menuItem5 = MenuItemFont::create("Next: Scale a Sprite"); menuItem5->setFontNameObj("Marker Felt.ttf"); menuItem5->setFontSizeObj(32); menuItem5->setName("menuItem5"); menuItem5->setVisible(false); menuItem5->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem5->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite1"); dirs->removeChildByName("sprite2"); dirs->removeChildByName("sprite3"); dirs->removeChildByName("sprite4"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite5"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite->getPosition()); dirs->addChild(point00,2); auto newSpriteScaleXY = Sprite::create("Blue_Front1.png"); newSpriteScaleXY->setPosition(300,256); newSpriteScaleXY->setName("sprite6"); newSpriteScaleXY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleXY->setScale(2.0f); dirs->addChild(newSpriteScaleXY,1); auto pointXY = Sprite::create("dot.png"); pointXY->setName("pointXY"); pointXY->setPosition(newSpriteScaleXY->getPosition()); dirs->addChild(pointXY,2); auto newSpriteScaleX = Sprite::create("Blue_Front1.png"); newSpriteScaleX->setPosition(500,256); newSpriteScaleX->setName("sprite7"); newSpriteScaleX->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleX->setScaleX(2.0f); dirs->addChild(newSpriteScaleX,1); auto pointX = Sprite::create("dot.png"); pointX->setName("pointX"); pointX->setPosition(newSpriteScaleX->getPosition()); dirs->addChild(pointX,2); auto newSpriteScaleY = Sprite::create("Blue_Front1.png"); newSpriteScaleY->setPosition(800, 256); newSpriteScaleY->setName("sprite8"); newSpriteScaleY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteScaleY->setScaleY(2.0f); dirs->addChild(newSpriteScaleY,1); auto pointY = Sprite::create("dot.png"); pointY->setName("pointY"); pointY->setPosition(newSpriteScaleY->getPosition()); dirs->addChild(pointY,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem5"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem6"); dnode->setVisible(true); }); auto menuItem6 = MenuItemFont::create("Next: Anchor Point and Sprite"); menuItem6->setFontNameObj("Marker Felt.ttf"); menuItem6->setFontSizeObj(32); menuItem6->setName("menuItem6"); menuItem6->setVisible(false); menuItem6->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem6->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite5"); dirs->removeChildByName("sprite6"); dirs->removeChildByName("sprite7"); dirs->removeChildByName("sprite8"); dirs->removeChildByName("point00"); dirs->removeChildByName("pointXY"); dirs->removeChildByName("pointX"); dirs->removeChildByName("pointY"); auto newSprite00 = Sprite::create("Blue_Front1.png"); newSprite00->setPosition(100, 256); newSprite00->setName("sprite9"); newSprite00->setAnchorPoint(Vec2(0,0)); dirs->addChild(newSprite00,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite00->getPosition()); dirs->addChild(point00,2); auto newSprite01 = Sprite::create("Blue_Front1.png"); newSprite01->setPosition(250, 256); newSprite01->setName("sprite10"); newSprite01->setAnchorPoint(Vec2(0,1)); dirs->addChild(newSprite01,1); auto point01 = Sprite::create("dot.png"); point01->setName("point01"); point01->setPosition(newSprite01->getPosition()); dirs->addChild(point01,2); auto newSprite10 = Sprite::create("Blue_Front1.png"); newSprite10->setPosition(400, 256); newSprite10->setName("sprite11"); newSprite10->setAnchorPoint(Vec2(1,0)); dirs->addChild(newSprite10,1); auto point10 = Sprite::create("dot.png"); point10->setName("point10"); point10->setPosition(newSprite10->getPosition()); dirs->addChild(point10,2); auto newSprite11 = Sprite::create("Blue_Front1.png"); newSprite11->setPosition(550, 256); newSprite11->setName("sprite12"); newSprite11->setAnchorPoint(Vec2(1,1)); dirs->addChild(newSprite11,1); auto point11 = Sprite::create("dot.png"); point11->setName("point11"); point11->setPosition(newSprite11->getPosition()); dirs->addChild(point11,2); auto newSprite22 = Sprite::create("Blue_Front1.png"); newSprite22->setPosition(700, 256); newSprite22->setName("sprite13"); newSprite22->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite22,1); auto point22 = Sprite::create("dot.png"); point22->setName("point22"); point22->setPosition(newSprite22->getPosition()); dirs->addChild(point22,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem6"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem7"); dnode->setVisible(true); }); auto menuItem7 = MenuItemFont::create("Next: Skew a Sprite"); menuItem7->setFontNameObj("Marker Felt.ttf"); menuItem7->setFontSizeObj(32); menuItem7->setName("menuItem7"); menuItem7->setVisible(false); menuItem7->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem7->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite9"); dirs->removeChildByName("sprite10"); dirs->removeChildByName("sprite11"); dirs->removeChildByName("sprite12"); dirs->removeChildByName("sprite13"); dirs->removeChildByName("point00"); dirs->removeChildByName("point01"); dirs->removeChildByName("point10"); dirs->removeChildByName("point11"); dirs->removeChildByName("point22"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite14"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto pointN = Sprite::create("dot.png"); pointN->setName("pointN"); pointN->setPosition(newSprite->getPosition()); dirs->addChild(pointN,2); auto newSpriteSkewX = Sprite::create("Blue_Front1.png"); newSpriteSkewX->setPosition(250, 256); newSpriteSkewX->setName("sprite15"); newSpriteSkewX->setAnchorPoint(Vec2(0.5,0.5)); newSpriteSkewX->setSkewX(20.0f); dirs->addChild(newSpriteSkewX,1); auto pointX = Sprite::create("dot.png"); pointX->setName("pointX"); pointX->setPosition(newSpriteSkewX->getPosition()); dirs->addChild(pointX,2); auto newSpriteSkewY = Sprite::create("Blue_Front1.png"); newSpriteSkewY->setPosition(400, 256); newSpriteSkewY->setName("sprite16"); newSpriteSkewY->setAnchorPoint(Vec2(0.5,0.5)); newSpriteSkewY->setSkewY(20.0f); dirs->addChild(newSpriteSkewY,1); auto pointY = Sprite::create("dot.png"); pointY->setName("pointY"); pointY->setPosition(newSpriteSkewY->getPosition()); dirs->addChild(pointY,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem7"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem8"); dnode->setVisible(true); }); auto menuItem8 = MenuItemFont::create("Next: Rotate a Sprite"); menuItem8->setFontNameObj("Marker Felt.ttf"); menuItem8->setFontSizeObj(32); menuItem8->setName("menuItem8"); menuItem8->setVisible(false); menuItem8->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem8->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite14"); dirs->removeChildByName("sprite15"); dirs->removeChildByName("sprite16"); dirs->removeChildByName("pointN"); dirs->removeChildByName("pointX"); dirs->removeChildByName("pointY"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite17"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto point00 = Sprite::create("dot.png"); point00->setName("point00"); point00->setPosition(newSprite->getPosition()); dirs->addChild(point00,2); auto newSpriteRotateP20 = Sprite::create("Blue_Front1.png"); newSpriteRotateP20->setPosition(250, 256); newSpriteRotateP20->setName("sprite18"); newSpriteRotateP20->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateP20->setRotation(20.0f); dirs->addChild(newSpriteRotateP20,1); auto pointP20 = Sprite::create("dot.png"); pointP20->setName("pointP20"); pointP20->setPosition(newSpriteRotateP20->getPosition()); dirs->addChild(pointP20,2); auto newSpriteRotateN20 = Sprite::create("Blue_Front1.png"); newSpriteRotateN20->setPosition(400, 256); newSpriteRotateN20->setName("sprite19"); newSpriteRotateN20->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateN20->setRotation(-20.0f); dirs->addChild(newSpriteRotateN20,1); auto pointN20 = Sprite::create("dot.png"); pointN20->setName("pointN20"); pointN20->setPosition(newSpriteRotateN20->getPosition()); dirs->addChild(pointN20,2); auto newSpriteRotateP60 = Sprite::create("Blue_Front1.png"); newSpriteRotateP60->setPosition(550, 256); newSpriteRotateP60->setName("sprite20"); newSpriteRotateP60->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateP60->setRotation(60.0f); dirs->addChild(newSpriteRotateP60,1); auto pointP60 = Sprite::create("dot.png"); pointP60->setName("pointP60"); pointP60->setPosition(newSpriteRotateP60->getPosition()); dirs->addChild(pointP60,2); auto newSpriteRotateN60 = Sprite::create("Blue_Front1.png"); newSpriteRotateN60->setPosition(700, 256); newSpriteRotateN60->setName("sprite21"); newSpriteRotateN60->setAnchorPoint(Vec2(0.5,0.5)); newSpriteRotateN60->setRotation(-60.0f); dirs->addChild(newSpriteRotateN60,1); auto pointN60 = Sprite::create("dot.png"); pointN60->setName("pointN60"); pointN60->setPosition(newSpriteRotateN60->getPosition()); dirs->addChild(pointN60,2); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem8"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem9"); dnode->setVisible(true); }); auto menuItem9 = MenuItemFont::create("Next: Change the Color of a Sprite"); menuItem9->setFontNameObj("Marker Felt.ttf"); menuItem9->setFontSizeObj(32); menuItem9->setName("menuItem9"); menuItem9->setVisible(false); menuItem9->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem9->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite18"); dirs->removeChildByName("sprite19"); dirs->removeChildByName("sprite20"); dirs->removeChildByName("sprite21"); dirs->removeChildByName("point00"); dirs->removeChildByName("pointP20"); dirs->removeChildByName("pointN20"); dirs->removeChildByName("pointP60"); dirs->removeChildByName("pointN60"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite30"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); dirs->addChild(newSprite,1); auto newSprite2 = Sprite::create("Blue_Front1.png"); newSprite2->setPosition(200, 256); newSprite2->setName("sprite31"); newSprite2->setAnchorPoint(Vec2(0.5,0.5)); newSprite2->setColor(Color3B(155, 200, 50)); dirs->addChild(newSprite2,1); auto newSprite3 = Sprite::create("Blue_Front1.png"); newSprite3->setPosition(300, 256); newSprite3->setName("sprite32"); newSprite3->setAnchorPoint(Vec2(0.5,0.5)); newSprite3->setColor(Color3B(10, 230, 100)); dirs->addChild(newSprite3,1); auto newSprite4 = Sprite::create("Blue_Front1.png"); newSprite4->setPosition(400, 256); newSprite4->setName("sprite33"); newSprite4->setAnchorPoint(Vec2(0.5,0.5)); newSprite4->setColor(Color3B(100, 101, 230)); dirs->addChild(newSprite4,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem9"); cnode->setVisible(false); auto dnode = bnode->getChildByName("menuItem10"); dnode->setVisible(true); }); auto menuItem10 = MenuItemFont::create("Next: Change the Color of a Sprite"); menuItem10->setFontNameObj("Marker Felt.ttf"); menuItem10->setFontSizeObj(32); menuItem10->setName("menuItem10"); menuItem10->setVisible(false); menuItem10->setPosition(Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height/2).x, (Vec2(origin.x+visibleSize.width/2, origin.y+visibleSize.height).y - (index) * 40)); menuItem10->setCallback([&](cocos2d::Ref *sender) { // hide everything else on the screen auto dirs = Director::getInstance()->getRunningScene(); dirs->removeChildByName("sprite30"); dirs->removeChildByName("sprite31"); dirs->removeChildByName("sprite32"); dirs->removeChildByName("sprite33"); auto newSprite = Sprite::create("Blue_Front1.png"); newSprite->setPosition(100, 256); newSprite->setName("sprite34"); newSprite->setAnchorPoint(Vec2(0.5,0.5)); newSprite->setOpacity(0.0f); dirs->addChild(newSprite,1); auto newSprite2 = Sprite::create("Blue_Front1.png"); newSprite2->setPosition(200, 256); newSprite2->setName("sprite35"); newSprite2->setAnchorPoint(Vec2(0.5,0.5)); newSprite2->setOpacity(99); dirs->addChild(newSprite2,1); auto newSprite3 = Sprite::create("Blue_Front1.png"); newSprite3->setPosition(300, 256); newSprite3->setName("sprite36"); newSprite3->setAnchorPoint(Vec2(0.5,0.5)); newSprite3->setOpacity(89); dirs->addChild(newSprite3,1); auto newSprite4 = Sprite::create("Blue_Front1.png"); newSprite4->setPosition(400, 256); newSprite4->setName("sprite37"); newSprite4->setAnchorPoint(Vec2(0.5,0.5)); newSprite4->setOpacity(79); dirs->addChild(newSprite4,1); auto anode = dirs->getChildByName("menuNode"); auto bnode = anode->getChildByName("menu"); auto cnode = bnode->getChildByName("menuItem10"); cnode->setVisible(false); //auto dnode = bnode->getChildByName("menuItem10"); //dnode->setVisible(true); }); auto menu = Menu::create(menuItem1, menuItem2, menuItem3, menuItem4, menuItem5, menuItem6, menuItem7, menuItem8, menuItem9, menuItem10, NULL); menu->setName("menu"); menuNode->addChild(menu, 1); menu->setPosition(Vec2::ZERO); scene->addChild(menuNode, 2); // return the scene return scene; }
void Game::drawStatusGUI() { auto director = CCDirector::sharedDirector(); auto visibleSize = director->getVisibleSize(); drawStatusBar(visibleSize); drawInventory(visibleSize); }
void TestList::runThisTest() { _cellTouchEnabled = true; auto director = Director::getInstance(); auto scene = Scene::create(); auto visibleSize = director->getVisibleSize(); auto origin = director->getVisibleOrigin(); auto tableView = TestCustomTableView::create(this, Size(400, visibleSize.height)); tableView->setPosition(origin.x + (visibleSize.width - 400) / 2, origin.y); tableView->setDirection(ScrollView::Direction::VERTICAL); tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN); tableView->setDelegate(this); scene->addChild(tableView); tableView->reloadData(); if (_shouldRestoreTableOffset) { tableView->setContentOffset(_tableOffset); } if (_parentTest) { //Add back button. TTFConfig ttfConfig("fonts/arial.ttf", 20); auto label = Label::createWithTTF(ttfConfig, "Back"); auto menuItem = MenuItemLabel::create(label, std::bind(&TestBase::backsUpOneLevel, this)); auto menu = Menu::create(menuItem, nullptr); menu->setPosition(Vec2::ZERO); menuItem->setPosition(Vec2(VisibleRect::right().x - 50, VisibleRect::bottom().y + 25)); scene->addChild(menu, 1); } else { //Add close and "Start AutoTest" button. auto closeItem = MenuItemImage::create(s_pathClose, s_pathClose, [](Ref* sender){ TestController::getInstance()->stopAutoTest(); TestController::destroyInstance(); Director::getInstance()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0); #endif }); closeItem->setPosition(VisibleRect::right().x - 30, VisibleRect::top().y - 30); auto autoTestLabel = Label::createWithTTF("Start AutoTest","fonts/arial.ttf",16); auto autoTestItem = MenuItemLabel::create(autoTestLabel, [&](Ref* sender){ TestController::getInstance()->startAutoTest(); }); autoTestItem->setPosition(Vec2(VisibleRect::right().x - 70, VisibleRect::bottom().y + 25)); auto menu = Menu::create(closeItem, autoTestItem, nullptr); menu->setPosition(Vec2::ZERO); scene->addChild(menu, 1); } director->replaceScene(scene); }