// 设置背景图片的方法 void BasicLayer::setBackgroundImage( const char* back_image_name ){ CCSprite* sp = CCSprite::create( back_image_name ); sp->setPosition( ccp( getWinSize().width / 2 , getWinSize().height / 2 ) ); this->addChild( sp ); }
bool LoadingLayer::setUpdateView() { bool isRet = false; do{ CCSprite* loadingbackimg = CCSprite::create("gmbg/loadingbg.png"); CC_BREAK_IF(!loadingbackimg); loadingbackimg->setPosition(ccp(getWinSize().width/2 + getWinOrigin().x, getWinSize().height/5 + getWinOrigin().y)); this->addChild(loadingbackimg, 1); CCSprite* loadimg = CCSprite::create("gmbg/loading.png"); CC_BREAK_IF(!loadimg); CCProgressTimer* pt = CCProgressTimer::create(loadimg); pt->setType(cocos2d::CCProgressTimerType(kCCProgressTimerTypeBar)); pt->setMidpoint(ccp(0,0.5)); pt->setBarChangeRate(ccp(1,0)); float tex = getWinSize().width/2 + getWinOrigin().x; float tey = getWinSize().height/5 + getWinOrigin().y-5; pt->setPosition(ccp(tex, tey)); pt->setPercentage(0); this->addChild(pt, 2, 1); CCProgressTo* to = CCProgressTo::create(5, 100); pt->runAction(CCRepeatForever::create(to)); isRet = true; }while(0); return isRet; }
bool LoadingLayer::setUpdateView(){ bool isRet=false; do { // 设置进度条的背景图片 我们把他放到屏幕下方的1/5处 CCSprite* loadbackimg=CCSprite::create("gmbg/lodingbg.png"); CC_BREAK_IF(!loadbackimg); loadbackimg->setPosition(ccp(getWinSize().width/2+getWinOrigin().x,getWinSize().height/5+getWinOrigin().y)); this->addChild(loadbackimg,1); // 添加进度条 CCSprite* loadimg=CCSprite::create("gmbg/longding.png"); CC_BREAK_IF(!loadimg); CCProgressTimer* pt = CCProgressTimer::create(loadimg); pt->setType(kCCProgressTimerTypeBar);// 设置成横向的 //可以看作是按矩形显示效果的进度条类型 pt->setMidpoint(ccp(0,0)); // 用来设定进度条横向前进的方向从左向右或是从右向左 pt->setBarChangeRate(ccp(1,0)); //重新设置锚点 float tex=getWinSize().width/2+getWinOrigin().x; float tey=getWinSize().height/5+getWinOrigin().y-5; pt->setPosition(ccp(tex,tey)); pt->setPercentage(0); this->addChild(pt,2,1); isRet=true; } while (0); return isRet; }
void AboutLayer::setupViews(){ setBackgroundImage( "loading.png" ); // 加入title CCSprite* title = CCSprite::create( "menuTitle.png",CCRectMake(0, 34, 130, 38) ); title->setAnchorPoint( ccp(0.5, 1) ); title->setPosition( ccp( getWinSize().width / 2 ,getWinSize().height -20 ) ); this->addChild( title ); // 加入文字说明 CCLabelBMFont* pDes = CCLabelBMFont::create( "This Game is recoded by longlingxiu ", "arial-14.fnt" ); pDes->setPosition( ccp(getWinSize().width / 2, getWinSize().height / 2) ); this ->addChild(pDes); CCLabelBMFont* fontOfBack = CCLabelBMFont::create("Go Back", "arial-14.fnt" ); fontOfBack->setScale(1.5f); CCMenuItemLabel* backLabel = CCMenuItemLabel::create(fontOfBack, this, menu_selector(AboutLayer::back_callback)); backLabel->setAnchorPoint( ccp( 0.5, 0 ) ); backLabel->setPosition( ccp( getWinSize().width / 2, 30) ); CCMenu* menu = CCMenu::create( backLabel, NULL );; menu->setPosition( CCPointZero ); this->addChild( menu ); }
void EnemyManager::setupViews(){ // 初始化一个敌机 Monster monster = { monster1 }; EnemyModel* enemyModel = EnemyModel::getEnemey( monster, ccp( getWinSize().width /2 , getWinSize().height * .75) ); enemyArray->addObject( enemyModel ); this->addChild(enemyModel,1); enemyModel->setPosition( ccp( getWinSize().width /2 , getWinSize().height * .75) ); }
// 对控件以及布景 进行初始化 void OptionLayer::setupViews(){ // 加入背景图片 setBackgroundImage( "loading.png" ); // 加入menutitle CCSprite* title = CCSprite::create( "menuTitle.png",CCRectMake(0, 0, 133, 36) ); title->setAnchorPoint( ccp(0.5, 1) ); title->setPosition( ccp( getWinSize().width / 2 ,getWinSize().height -20 ) ); this->addChild( title ); // 加入menu-- 既是创建CCMenuItemToggle CCMenuItemToggle* music_trigger = CCMenuItemToggle::createWithTarget(this, menu_selector(OptionLayer::music_trigger_callback), CCMenuItemFont::create( "Music : On" ),CCMenuItemFont::create("Music : Off"),NULL); music_trigger->setPosition( ccp( getWinSize().width / 2 ,getWinSize().height / 2 ) ); // 根据背景音乐播放与否来显示相关的文字选项 if( SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying() ) { music_trigger->setSelectedIndex( 1 ); } else { music_trigger->setSelectedIndex( 0 ); } // 创建后退的CCMenuItem CCLabelBMFont* fontOfBack = CCLabelBMFont::create("Go Back", "arial-14.fnt" ); fontOfBack->setScale(1.5f); CCMenuItemLabel* backLabel = CCMenuItemLabel::create(fontOfBack, this, menu_selector(OptionLayer::back_callback)); backLabel->setAnchorPoint( ccp( 0.5, 0 ) ); backLabel->setPosition( ccp( getWinSize().width / 2, 30) ); CCMenu* menu = CCMenu::create( music_trigger,backLabel,NULL); menu ->setPosition( CCPointZero ); // menu->setPosition( ccp( getWinSize().width / 2, getWinSize().height / 2) ); this->addChild( menu ); }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } director->setContentScaleFactor(1024.0 / director->getWinSize().width); // 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); // create a scene. it's an autorelease object auto scene = GameScene::scene(); // run director->runWithScene(scene); return true; }
bool DialogLayer::init() { bool bRet = false; do { CC_BREAK_IF(!CCLayerColor::initWithColor(ccc4(0, 0, 0, 125))); auto director = Director::getInstance(); auto size = director->getWinSize(); CCSprite * bg = CCSprite::create("MsgBox/message_box.png"); bg->setPosition(size.width / 2, size.height / 2); this->addChild(bg); onInitDialog(); initMenu(); //onInitDialog(); //initMenu(); bRet = true; } while (0); return bRet; }
void StartScene::itemArrange() { auto director = Director::getInstance(); auto winSize = director->getWinSize(); // 背景の作成 auto background = Sprite::create("Title.png"); background->setPosition(Vec2(winSize.width / 2, winSize.height / 2)); this->addChild(background); // スタートロゴの作成 auto startLogo = Sprite::create("start_logo.png"); startLogo->setPosition(Vec2(winSize.width / 2, START_BUTTON_POS_Y)); this->addChild(startLogo); // 点滅アクション auto blink = Sequence::create(FadeOut::create(1.0), FadeIn::create(1.0), NULL); startLogo->runAction(RepeatForever::create(blink)); // ルール画面の作成 auto rulescene = RuleScene::create(); this->setRuleScene(rulescene); // ランク画面の作成 auto rankscene = RankScene::create(); this->setRankScene(rankscene); // ルールボタンの作成 auto ruleButton = MenuItemImage::create("rule_button.png", "rule_button_pressed.png", [this](Ref *sender){ if(_ruleScene->getAtmain() && _rankScene->getAtmain()){// メイン画面が表示されていれば // ルール画面を表示する this->addChild(_ruleScene, 7); // メイン画面でないフラグを立てる _ruleScene->setAtmain(false); } //auto transition = TransitionPageTurn::create(0.5, scene, true); //Director::getInstance()->replaceScene(transition); }); // ランキングボタンの作成 auto rankButton = MenuItemImage::create("rank_button_home.png", "rank_button_home_pressed.png", [this](Ref* ref){ if(_ruleScene->getAtmain() && _rankScene->getAtmain()){// メイン画面が表示されていれば // ランク画面を表示する this->addChild(_rankScene, 7); // メイン画面でないフラグを立てる _rankScene->setAtmain(false); } //auto transition = TransitionPageTurn::create(0.5, scene, true); //Director::getInstance()->replaceScene(transition); }); // ボタンメニューの作成 auto menu = Menu::create(ruleButton, rankButton, nullptr); this->addChild(menu); menu->setPosition(winSize.width / 2.0, MENU_BUTTON_POS_Y); menu->alignItemsHorizontallyWithPadding(BUTTON_INTERVAL); }
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); Size winSize = director->getWinSize(); CCLOG("%f %f", winSize.width, winSize.height); // run director->runWithScene(GameScene::create()); return true; }
void DefenderGameLayer::detectd(float tim){ WeaponSprite* pweapon=(WeaponSprite*) this->getChildByTag(2); if(pweapon->getRunBulletsPool()){ CCArray* tem=CCArray::create(); for(int i=0;i<pweapon->getRunBulletsPool()->count();i++){ BulletsSprite* pbu=(BulletsSprite*) pweapon->getRunBulletsPool()->objectAtIndex(i); if (pbu->boundingBox().getMinX()>=getWinSize().width||pbu->boundingBox().getMinY()<0||pbu->boundingBox().getMinY()>=getWinSize().height){ pweapon->recoverBullet(pbu); tem->addObject(pbu); }else { bool isp= this->monsterSystem->collisionDetection(pbu); if(isp){ pweapon->recoverBullet(pbu); tem->addObject(pbu); }else { pbu->mymove();// 调用移动方法 } } } for(int j=0;j<tem->count();j++){ pweapon->getRunBulletsPool()->removeObject(tem->objectAtIndex(j),false); } tem->removeAllObjects(); } }
void City_layer::calculateRayByLocationInView(Ray* ray, const Vec2& location) { auto dir = Director::getInstance(); auto view = dir->getWinSize(); //auto mat = dir->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); //auto mat=pCamera->getProjectionMatrix(); auto mat=pCamera->getViewProjectionMatrix(); Vec3 src = Vec3(location.x, location.y, -1); Vec3 nearPoint; unproject(mat, &view, &src, &nearPoint); src = Vec3(location.x, location.y, 1); Vec3 farPoint; unproject(mat, &view, &src, &farPoint); Vec3 direction; Vec3::subtract(farPoint, nearPoint, &direction); direction.normalize(); ray->_origin = nearPoint; ray->_direction = direction; }
bool ShaderRetroEffect::init() { if( ShaderTestDemo::init() ) { auto fragStr = FileUtils::getInstance()->getStringFromFile(FileUtils::getInstance()->fullPathForFilename("Shaders/example_HorizontalColor.fsh")); GLchar * fragSource = (GLchar*)fragStr.c_str(); auto p = GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, fragSource); auto director = Director::getInstance(); auto s = director->getWinSize(); _label = Label::createWithBMFont("fonts/west_england-64.fnt","RETRO EFFECT"); _label->setAnchorPoint(Vec2::ANCHOR_MIDDLE); _label->setGLProgram(p); _label->setPosition(Vec2(s.width/2,s.height/2)); addChild(_label); scheduleUpdate(); return true; } return false; }
void MainScene::openCard(HighLow highLow){ auto director = Director::getInstance(); auto size = director->getWinSize(); // カード(右)を表示する int cardNum = rand() % 13 + 1; std::string filename = StringUtils::format("trump/c%02d.png", cardNum); _cardRight->setTexture(filename); // メニューの表示消す _selectMenu->setVisible(false); std::string status = ""; if (highLow == HighLow::HIGH && this->getCardNum() < cardNum || highLow == HighLow::LOW && this->getCardNum() > cardNum) { status = "WIN!!"; } else{ status = "LOSE..."; } // 勝敗を表示 _titleLabel->setString(status); // カード番号保存 this->setCardNum(cardNum); //アニメーションを作成 _cardRight->runAction(Sequence::create(DelayTime::create(2.0), CallFunc::create([this]{ this->changeCard(); }), NULL)); };
bool MainScene::init() { if (!Layer::init()){ return false; } //乱数初期化 srand((unsigned int)time(NULL)); // directorを取り出す auto director = Director::getInstance(); // 画面サイズを取り出す auto size = director->getWinSize(); // カード(左)を表示する int cardNum = rand() % 13 + 1; this->setCardNum(cardNum); std::string filename = StringUtils::format("trump/c%02d.png", cardNum); auto cardLeft = Sprite::create(filename); cardLeft->setPosition(Vec2(size.width / 3.0, size.height / 2.0)); this->setCardLeft(cardLeft); this->addChild(cardLeft); // カード(右)を表示する auto cardRight = Sprite::create("trump/z01.png"); cardRight->setPosition(Vec2(size.width / 3.0 * 2.0, size.height / 2.0)); this->setCardRight(cardRight); this->addChild(cardRight); auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [](Touch* touch, Event* event){ return true; }; // タイトルラベルの表示 auto titleLabel = Label::createWithSystemFont("High and Low", "Market Felt", 48); this->setTitleLabel(titleLabel); titleLabel->setPosition(Vec2(size.width / 2.0, size.height / 5.0 * 4.0)); this->addChild(titleLabel); // メニューの表示 auto highButtonLabel = LabelTTF::create("High", "Market Felt", 48); auto highButton = MenuItemLabel::create(highButtonLabel, [this](Ref* ref){ this->openCard(HighLow::HIGH); }); auto lowButtonLabel = LabelTTF::create("Low", "Market Felt", 48); auto lowButton = MenuItemLabel::create(lowButtonLabel, [this](Ref* ref){ this->openCard(HighLow::LOW); }); auto menu = Menu::create(highButton, lowButton, NULL); menu->alignItemsHorizontallyWithPadding(60); menu->setPosition(Vec2(size.width/2.0, size.height/ 5.0)); this->setSelectMenu(menu); this->addChild(menu); this->scheduleUpdate(); return true; }
void InfoMapLayer::setFonts(const std::string & fontsFilePath) { mFonts = fontsFilePath; auto director = Director::getInstance(); width = director->getWinSize().width; height = director->getWinSize().height; mUnitInfoLabel->setString(""); mUnitInfoLabel = Label::createWithTTF("", mFonts, 16); mUnitInfoLabel->setPosition(width / 2, height / 2); mUnitInfoLabel->setDimensions(134, 108);// mUnitInfoLabel->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER); addChild(mUnitInfoLabel, 2); //unitname mUnitNameLabel->setString(""); mUnitNameLabel = Label::createWithTTF("", mFonts, 20); mUnitNameLabel->setPosition(width / 2, height / 2 + 70); addChild(mUnitNameLabel, 3); // mTechNameLabel->setString(""); mTechNameLabel = Label::createWithTTF("", mFonts, 20); mTechNameLabel->setPosition(width / 2, height / 2 + 70); addChild(mTechNameLabel, 7); // mTechIntroLabel->setString(""); mTechIntroLabel = Label::createWithTTF("", mFonts, 16); mTechIntroLabel->setPosition(width / 2, height / 2); mTechIntroLabel->setDimensions(134, 108);// mTechIntroLabel->setAlignment(TextHAlignment::CENTER, TextVAlignment::CENTER); addChild(mTechIntroLabel, 8); // mTechTurnLeft->setString(""); mTechTurnLeft = Label::createWithTTF("", mFonts, 20); mTechTurnLeft->setPosition(width / 2, height / 2 - 70); addChild(mTechTurnLeft, 9); // mTechNameLabel->setVisible(false); mTechIntroLabel->setVisible(false); mTechTurnLeft->setVisible(false); mUnitNameLabel->setVisible(false); mUnitInfoLabel->setVisible(false); }
CCSize CCDirector::getWinSizeInPixels() { CCSize s = getWinSize(); s.width *= CC_CONTENT_SCALE_FACTOR(); s.height *= CC_CONTENT_SCALE_FACTOR(); return s; }
void initWinSiz() { auto director = cocos2d::Director::getInstance(); winSiz = director->getWinSize(); winMidX = winSiz.width/2; winMidY = winSiz.height/2; screenSiz = director->getOpenGLView()->getFrameSize(); db = UserDefault::getInstance(); //audioEngine->preloadBackgroundMusic("BGMusic01.mp3"); }
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; }
bool AppDelegate::applicationDidFinishLaunching() { auto designSize = Size(640, 960); // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::createWithRect("My Game", Rect(0, 0, 640, 960)); director->setOpenGLView(glview); glview->setFrameSize(640, 960); glview->setFrameZoomFactor(0.8); } 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); glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::FIXED_WIDTH); auto wisize = director->getWinSize(); director->setContentScaleFactor(1136/designSize.height); // create a scene. it's an autorelease object //auto scene = View::Hall::createScene(); //auto scene = View::GameLayer::creatScene(); // run auto scene = View::LoginBar::createScene(); //View::_table.init(); //auto scene = View::Table::creatScene(); //std::vector<View::PlayerInfo> pInfo; //View::PlayerInfo pi; //pi.chairid = 0; //pi.allchips = 1000; //pi.nickname = "xiaocelao"; //for (int i = 0; i < 3; ++i) //{ // pInfo.push_back(pi); //} //View::_table.onPlayerEnter(pInfo); //auto scene = View::GameLayer::creatScene(); Director::getInstance()->runWithScene(scene); return true; }
void OptionLayer::setViews() { setBackGroundImage("loading.png"); CCSprite *title = CCSprite::create("menuTitle.png",CCRectMake(0,0,135,35)); title->setAnchorPoint(ccp(0.5,1)); title->setPosition(ccp(getWinSize().width/2,getWinSize().height-20)); this->addChild(title); CCMenuItemToggle *music_trigger = CCMenuItemToggle::createWithTarget(this,menu_selector(OptionLayer::music_triggerCallback), CCMenuItemFont::create("Music : On"),CCMenuItemFont::create("Music : Off"),NULL); music_trigger->setPosition(ccp(getWinSize().width/2,getWinSize().height/2)); if(SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) { music_trigger->setSelectedIndex(1); } else { music_trigger->setSelectedIndex(0); } //menu->setPosition(ccp(getWinSize().width/2,getWinSize().height/2)); CCLabelBMFont *back = CCLabelBMFont::create("back","arial-14.fnt"); back->setScale(1.25f); CCMenuItemLabel *backLable = CCMenuItemLabel::create(back,this,menu_selector(OptionLayer::backCallback)); backLable->setAnchorPoint(ccp(0.5,1)); backLable->setPosition(ccp(getWinSize().width/2,50)); CCMenu *menu = CCMenu::create(music_trigger,backLable,NULL); menu->setPosition(CCPointZero); this->addChild(menu); }
bool TitleScene::init(){ if(!Layer::init()){ return false; } auto director=Director::getInstance(); auto winSize=director->getWinSize(); //背景の追加 auto background=Sprite::create("title_background.png"); background->setPosition(Vec2(winSize.width/2.0, winSize.height/2.0)); this->addChild(background); //ロゴの追加 auto logo=Sprite::create("title_logo.png"); logo->setPosition(Vec2(winSize.width/2.0, winSize.height-150)); this->addChild(logo); //Touch to Startの追加 auto touchToStart=Sprite::create("title_start.png"); touchToStart->setPosition(Vec2(winSize.width/2.0,90)); //点滅させるアクションの定義 auto blink=Sequence::create(FadeTo::create(0.5, 127), FadeTo::create(0.5, 255), NULL); touchToStart->runAction(RepeatForever::create(blink)); this->addChild(touchToStart); //画面をタッチしたときにメイン画面へ遷移 auto listener=EventListenerTouchOneByOne::create(); listener->onTouchBegan=[this](Touch* touch,Event* event){ CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("decide.mp3"); //何度も押せないように一度押したらアクションを無効化する this->getEventDispatcher()->removeAllEventListeners(); //0.5秒待ってからCallFuncを呼ぶ auto delay=DelayTime::create(0.5); //ゲームを始めるアクション auto startGame=CallFunc::create([]{ auto scene=MainScene::createScene(); auto transition=TransitionPageTurn::create(0.5, scene, true); Director::getInstance()->replaceScene(transition); }); this->runAction(Sequence::create(delay,startGame, NULL)); return true; }; this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this); 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); }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); Size winSize = director->getWinSize(); if(!glview) { //glview = GLView::createWithRect("My Game", Rect(0, 0, winSize.width, winSize.height), 1); glview = GLView::create("My Game"); //glview->setFrameSize(540, 960); director->setOpenGLView(glview); } //director->setContentScaleFactor(MIN(birdResource.size.height/designResolutionSize.height, birdResource.size.width/designResolutionSize.width)); //director->setContentScaleFactor(birdResource.size.height/designResolutionSize.height); //director->setContentScaleFactor(birdResource.size.width/designResolutionSize.width); //glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL); //director->setContentScaleFactor(1.0); float scale = director->getContentScaleFactor(); LOGD("scale is %f", scale); this->setResourceSearchResolution(); // 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); // create a scene. it's an autorelease object //auto scene = HelloWorld::createScene(); auto scene = Scene::create(); auto layer = new GameController(); layer->autorelease(); layer->addConsoleAutoGame(); scene->addChild(layer); //auto scene = LoadingScene::create(); // run director->runWithScene(scene); return true; }
Rect Helper::convertBoundingBoxToScreen(Node* node) { auto director = Director::getInstance(); auto glView = director->getOpenGLView(); auto frameSize = glView->getFrameSize(); auto winSize = director->getWinSize(); auto leftBottom = node->convertToWorldSpace(Point::ZERO); auto contentSize = node->getContentSize(); auto rightTop = node->convertToWorldSpace(Point(contentSize.width, contentSize.height)); auto uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX(); auto uiTop = frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY(); return Rect(uiLeft,uiTop, (rightTop.x - leftBottom.x) * glView->getScaleX(), (rightTop.y - leftBottom.y) * glView->getScaleY()); }
void WebViewImpl::draw(cocos2d::Renderer *renderer, cocos2d::Mat4 const &transform, uint32_t flags) { if (flags & cocos2d::Node::FLAGS_TRANSFORM_DIRTY) { auto directorInstance = cocos2d::Director::getInstance(); auto glView = directorInstance->getOpenGLView(); auto frameSize = glView->getFrameSize(); auto winSize = directorInstance->getWinSize(); auto leftBottom = this->_webView->convertToWorldSpace(cocos2d::Point::ZERO); auto rightTop = this->_webView->convertToWorldSpace(cocos2d::Point(this->_webView->getContentSize().width,this->_webView->getContentSize().height)); auto uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX(); auto uiTop = frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY(); setWebViewRectJNI(_viewTag,uiLeft,uiTop, (rightTop.x - leftBottom.x) * glView->getScaleX(), (rightTop.y - leftBottom.y) * glView->getScaleY()); } }
void EditBoxImplAndroid::createNativeControl(const Rect& frame) { auto director = cocos2d::Director::getInstance(); auto glView = director->getOpenGLView(); auto frameSize = glView->getFrameSize(); auto winSize = director->getWinSize(); auto leftBottom = _editBox->convertToWorldSpace(Point::ZERO); auto contentSize = frame.size; auto rightTop = _editBox->convertToWorldSpace(Point(contentSize.width, contentSize.height)); auto uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2 ) * glView->getScaleX(); auto uiTop = frameSize.height /2 - (rightTop.y - winSize.height / 2) * glView->getScaleY(); auto uiWidth = (rightTop.x - leftBottom.x) * glView->getScaleX(); auto uiHeight = (rightTop.y - leftBottom.y) * glView->getScaleY(); LOGD("scaleX = %f", glView->getScaleX()); _editBoxIndex = addEditBoxJNI(uiLeft, uiTop, uiWidth, uiHeight, glView->getScaleX()); s_allEditBoxes[_editBoxIndex] = this; }
// 移动所有的子弹 void HeroBulletMananger::moveAllBullets( float t ){ CCSize size = getWinSize(); CCObject* obj = NULL; CCObject* oo = NULL; CCARRAY_FOREACH( bulletsArray, obj ){ CCSprite* sp = ( CCSprite*)obj; sp->setPositionY( sp->getPositionY() + 10 ); // 如果出边界则移除子弹,否则进行判断 if( sp->getPositionY() > OFFSIDE_HEIGHT){ mBulletsBatchNode->removeChild( sp , true ); bulletsArray->removeObject( sp ); }else{ GamingLayer* father = (GamingLayer*)this->getParent(); CCArray* eArr = father->mEnemyManager->getEnemyArray(); CCARRAY_FOREACH(eArr, oo ){ EnemyModel* model = (EnemyModel*)oo; if( sp->boundingBox().containsPoint( model->getPosition())){ Effects::sharedEffects()->boom( this->getParent(), model->getPosition() ); } } }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } auto director = Director::getInstance(); _winSize = director->getWinSize(); _ground = GroundLayer::create(); this->addChild(_ground, 0); auto interface = InterfaceLayer::create(); interface->setDelegate(_ground); this->addChild(interface, 1); return true; }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { int height, width; height = 640; width = height*(960.0/640.0); glview = GLView::createWithRect("TankMultiplayer", Rect(0, 0, 960, 640)); director->setOpenGLView(glview); } glview->setDesignResolutionSize(960, 640, ResolutionPolicy::FIXED_HEIGHT); log("%f, scale", director->getContentScaleFactor()); log("%f, scale2", director->getWinSize().width/ director->getOpenGLView()->getFrameSize().width ); // 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); g_gameConfig.lazyInit(); FileUtils::getInstance()->addSearchPath("sfx"); FileUtils::getInstance()->addSearchPath("particles"); FileUtils::getInstance()->addSearchPath("fonts"); // create a scene. it's an autorelease object auto scene = GameScene::createScene(); //auto scene = MainScreenScene::createScene(); //auto scene = TestTBMP::createScene("345678"); //auto scene = WagonSelect::createScene(FIRST_TURN); // run director->runWithScene(scene); return true; }