// Config the view using Json data void ActorView::deserialize(Json::Value &configData) { View::deserialize(configData); setRadius (DataManager::getFloat (configData, "radius", getRadius())); setZOrder (DataManager::getInt (configData, "zOrder", getZOrder())); }
void UIWidget::copyProperties(UIWidget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); m_bTouchPassedEnabled = false; setZOrder(widget->getZOrder()); setUpdateEnabled(widget->isUpdateEnabled()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); m_bIgnoreSize = widget->m_bIgnoreSize; m_tSize = widget->m_tSize; m_tCustomSize = widget->m_tCustomSize; copySpecialProperties(widget); m_eSizeType = widget->getSizeType(); m_tSizePercent = widget->m_tSizePercent; m_ePositionType = widget->m_ePositionType; m_tPositionPercent = widget->m_tPositionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationX(widget->getRotationX()); setRotationY(widget->getRotationY()); setFlipX(widget->isFlipX()); setFlipY(widget->isFlipY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); setCascadeOpacityEnabled(widget->isCascadeOpacityEnabled()); setCascadeColorEnabled(widget->isCascadeColorEnabled()); onSizeChanged(); }
void GamePlay::gameHelp() { if (onSound) CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( "sound/button.mp3"); boardMenuPause->setVisible(false); boardMenuHelp = Sprite::create("board.png"); boardMenuHelp->setPosition( Vec2(visibleSize.width / 2, visibleSize.height / 2)); boardMenuHelp->setZOrder(30); this->addChild(boardMenuHelp); float haflHeight = boardMenuHelp->getContentSize().height / 2; float haflWidth = boardMenuHelp->getContentSize().width / 2; Sprite* text = Sprite::create("howtoplaytext.png"); text->setPosition(Vec2(haflWidth + PADDING / 2, haflHeight)); text->setZOrder(40); boardMenuHelp->addChild(text); MenuItemImage* closeBtn = MenuItemImage::create("menu_closeBtn.png", "menu_closeBtn.png", CC_CALLBACK_0(GamePlay::gameCloseMenu, this)); auto menuClose = Menu::create(closeBtn, nullptr); menuClose->setZOrder(40); menuClose->setPosition( Vec2(haflWidth * 2 - closeBtn->getContentSize().width - PADDING, haflHeight * 2 - closeBtn->getContentSize().height - PADDING)); boardMenuHelp->addChild(menuClose); }
bool TestTouch::onMyTouchBegan(Touch* touch, Event* event) { auto target = static_cast<Sprite*>(event->getCurrentTarget()); // 获取当前触控点相对与按钮的位置 Point locationInNode = target->convertToNodeSpace(touch->getLocation()); Size s = target->getContentSize(); Rect rect = Rect(0, 0, s.width, s.height); // 检测点击区域 if (rect.containsPoint(locationInNode)) { log("TestTouch::onMyTouchBegan... x = %f, y = %f", locationInNode.x, locationInNode.y); target->setOpacity(180); return true; std::pair<int, int> s; s.first = 3; s.second = 4; } //重新设置 zOrder,改变现实顺序 target->setZOrder(0); if (target == sp1) { sp2->setZOrder(1); } else { sp1->setZOrder(1); } this->sortAllChildren(); return false; }
void Bigmap::initMessageThings() { float fontSize = 25 * DDConfig::fontSizeRadio(); auto bigmapRect = DDConfig::bigmapAreaRect(); float px = bigmapRect.origin.x + 0.5f * bigmapRect.size.width; float py_now = bigmapRect.origin.y + fontSize; _messageYStart = py_now; float y_step = (bigmapRect.size.height - fontSize*2)/NUM_MESSAGE_LABEL; _messageYStep = y_step; auto size = DDConfig::getWinSize(); cocos2d::Vec2 shadowOffset = Vec2{0,2}*DDConfig::fontSizeRadio(); for (int i = 0; i < NUM_MESSAGE_LABEL; i++) { auto lbAbove = Label::createWithTTF("test message", TRLocale::s().font(), fontSize); lbAbove->setPosition({px, py_now}); lbAbove->setZOrder(GameScene::Z_BIGMAP_MESSAGE_ABOVE); lbAbove->setTextColor(Color4B::WHITE); _lbMessages[i] = lbAbove; _uiLayer->addChild(lbAbove); auto lbShadow = Label::createWithTTF("test message", TRLocale::s().font(), fontSize); lbShadow->setPosition(Vec2{px, py_now} + shadowOffset); lbShadow->setZOrder(GameScene::Z_BIGMAP_MESSAGE_SHADOW); lbShadow->setTextColor(Color4B::GRAY); _lbMessagesShadow[i] = lbShadow; _uiLayer->addChild(lbShadow); // 设置属性 lbAbove->setWidth(size.width*0.95); lbAbove->setAlignment(TextHAlignment::LEFT); lbAbove->setVisible(false); lbShadow->setWidth(size.width*0.95); lbShadow->setAlignment(TextHAlignment::LEFT); lbShadow->setVisible(false); py_now += y_step; } _messageHeadIndex = NUM_MESSAGE_LABEL-1; _rectEffectNode = DDRectEffectNode::create(); _rectEffectNode->setPosition({0,0}); _rectEffectNode->setZOrder(Z_RECT_EFFECT); _bigmapLayer->addChild(_rectEffectNode); }
bool LayerSetup::init() { CCLayer::init(); CCLayerColor* layerTrans = CCLayerColor::create(ccc4(192, 192, 192, 128)); addChild(layerTrans); CCLayerColor* layerBG = CCLayerColor::create(ccc4(192, 192, 192, 255), winSize.width / 2, winSize.height / 2); addChild(layerBG); layerBG->setPosition(ccp(winSize.width / 4, winSize.height / 4)); // 创建两个slider MyCCControlSlider* volumeBG = MyCCControlSlider::create("sliderTrack.png", "sliderProgress.png", "sliderThumb.png"); MyCCControlSlider* volumeEffect = MyCCControlSlider::create("sliderTrack.png", "sliderProgress.png", "sliderThumb.png"); addChild(volumeBG); addChild(volumeEffect); _volumeBG = volumeBG; _volumeEffect = volumeEffect; volumeBG->setMinimumValue(0.0f); volumeBG->setMaximumValue(1.0f); volumeEffect->setMinimumValue(0.0f); volumeEffect->setMaximumValue(1.0f); volumeBG->setPosition(ccp(winSize.width / 2, winSize.height / 2)); volumeEffect->setPosition(ccp(winSize.width / 2, winSize.height / 2)); Common::moveNodeY(volumeBG, 40); // Common::moveNodeY(volumeEffect, -30); volumeBG->addTargetWithActionForControlEvents(this, cccontrol_selector(LayerSetup::ChangeBGVolume), CCControlEventValueChanged); volumeEffect->addTargetWithActionForControlEvents(this, cccontrol_selector(LayerSetup::ChangeEffectVolume), CCControlEventValueChanged); setZOrder(Common::ZO_LAYER_SETUP); // 读配置文件 float fVolumeBG = CCUserDefault::sharedUserDefault()->getFloatForKey("BGVolume", 1.0f); float fVolumeEffect = CCUserDefault::sharedUserDefault()->getFloatForKey("EffectVolume", 1.0f); volumeBG->setValue(fVolumeBG); volumeEffect->setValue(fVolumeEffect); // 创建一个确定按钮 CCMenuItemFont* item = CCMenuItemFont::create("Close", this, menu_selector(LayerSetup::Close)); CCMenu* menu = CCMenu::createWithItem(item); addChild(menu); Common::moveNode(item, ccp(80, -60)); _menu = menu; // 暂停 // CCDirector::sharedDirector()->pause(); setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); setTouchPriority(-130); return true; }
void CCNodeAdornmentBase::initWithActionDuration( float aDuration ) { if ( super::init() ) { _actionDuration = aDuration; setZOrder( kAdornmentOverZOrder ); } }
void ComponentDock::zorderChanged(int Value) { if (eman != nullptr) { auto ent = eman->getEntity(currEntity); if (ent) { ent->setZOrder(Value); emit(entityZOrderChanged(ent)); } } }
bool LittleSnake::init() { if (!Layer::init()) { return false; } srand(time(NULL)); directorSize = Director::getInstance()->getVisibleSize(); directorOrigin = Director::getInstance()->getVisibleOrigin(); log("Director visible size: width->%d height->%d", (int)directorSize.width,(int) directorSize.height); log("Director origin: x->%d y->%d", (int)directorOrigin.x, (int)directorOrigin.y); auto background = Sprite::create("background.png"); background->setPosition(directorOrigin.x + background->getBoundingBox().size.width/2 + 40, directorOrigin.y + directorSize.height/2); // boundary width background->setLocalZOrder(-999); this->addChild(background); auto backgroundBoundary = Sprite::create("BackgroundBoundary.png"); backgroundBoundary->setPosition(directorOrigin.x + backgroundBoundary->getBoundingBox().size.width/2, directorOrigin.y + directorSize.height/2); backgroundBoundary->setZOrder(-999); this->addChild(backgroundBoundary); loadSnakeFaces(); addSnakeFacesAsChild(); auto touchListener = EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(true); touchListener->onTouchBegan = CC_CALLBACK_2(LittleSnake::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(LittleSnake::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(LittleSnake::onTouchEnded, this); touchListener->onTouchCancelled = CC_CALLBACK_2(LittleSnake::onTouchCancelled, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, this); auto menuItem1 = MenuItemFont::create("Go Back", CC_CALLBACK_1(LittleSnake::exitScene, this)); auto menuItem2 = MenuItemFont::create("Play Again", CC_CALLBACK_1(LittleSnake::playAgain, this)); menuItem1->setPosition(directorSize.width / 3 * 1, directorSize.height / 3 * 1); menuItem2->setPosition(directorSize.width / 3 * 2, directorSize.height / 3 * 1); menuItem1->setFontNameObj("fonts/Showcard Gothic.ttf"); // not refactoring right now menuItem2->setFontNameObj("fonts/Showcard Gothic.ttf"); menuItem1->setFontSizeObj(100); menuItem2->setFontSizeObj(100); menuItem1->setColor(Color3B(133, 96, 168)); // same as the menu font. not refactoring now. menuItem2->setColor(Color3B(133, 96, 168)); menu = Menu::create(menuItem1, menuItem2, NULL); menu->setPosition(0, 0); menu->setVisible(false); menu->setLocalZOrder(999); this->addChild(menu); return true; }
HNAMESPACE_BEGIN //HTouchEnabledLayerColor HTouchEnabledLayerColor::HTouchEnabledLayerColor(): CCLayerColor(), m_pDelegate(NULL), m_bTipAnimation(false), m_pTipLabel(NULL), m_pTimer(NULL), m_iTouchStatus(HTOUCHSTATUS_NONE) { m_pBakNodeList = new CCArray(2); setTouchMode(kCCTouchesOneByOne); setTouchPriority(-256); setZOrder(100000); m_pTimer = new HTimer; m_pTimer->registerTimer(this, 0, 0.1f, -1); }
Magic3D::Text::Text(std::string name, float size) : Object(eOBJECT_TEXT, eRENDER_3D, name) { setZOrder(true); Mesh* textMesh = new Mesh(new TextData("name", size, true), true, true); textMesh->setIlluminated(false); textMesh->setCastShadows(false); textMesh->setReceiveShadows(false); addMesh(textMesh); textMesh->addMaterial(ResourceManager::getMaterials()->get(M3D_DEFAULT_MATERIAL_FONT)); }
void Player::initPlayer(SpriteBatchNode* spriteBatchNode_) { setAnchorPoint(Point::ANCHOR_MIDDLE); // Create at the middle of the screen setPosition(Point(Director::getInstance()->getWinSize().width*0.5f, Director::getInstance()->getWinSize().height*0.5f)); // for prototyping setTextureRect(Rect(0.0f, 0.0f, PLAYER_WIDTH, PLAYER_HEIGHT)); setColor(Color3B(255, 255, 255)); setZOrder(2); }
Ally::Ally() :max_life(1) { setLife(max_life); setPower(1); setSpeed(15.0f); setEffectiveArea(Director::getInstance()->getWinSize()); setTag(kTagAlly); setZOrder(kZOrderMovableSprite); setStatus(Ally::Status::Normal); setSpecialEffect(BattleManager::SpecialEffect::Nothing); }
void GameScene::startGame() { Util::playSound(SOUND_SCENE_BG,true); auto util = MapUtil::getInstance(); /* 初始化道具的动画 */ std::vector<PlayerItemType> items = {{"coin0.png","coin_small",0.1f,PlayerInfoParam::kTypeCoin}, {"coin1.png","coin_big",0.1f,PlayerInfoParam::kTypeCoin}, {"speed.png","speed",0.3f,PlayerInfoParam::kTypeShoe}, {"power.png","power",0.2f,PlayerInfoParam::kTypePower}, {"bomb.png","bomb",0.2f,PlayerInfoParam::kTypeBomb}}; GameManager::getInstance()->setPlayerItems(items); auto it = items.begin(); while(it!=items.end()) { GameManager::getInstance()->initPlayerItemAnimations(it->frameName, it->animationName,it->perFrameDelay); it++; } /* 添加地图元素和UI元素到界面 */ auto mapLayer = MapLayer::create(); GameManager::getInstance()->setMapLayer(mapLayer); GameManager::getInstance()->setMonsterCount(0); auto baseTileLayer = util->getBaseTileLayer(); auto tmxLayer = util->getTmxTileLayer(); auto commonTileLayer = util->getCommonTileLayer(); auto borderLayer = util->addTileMapBorder(); auto mapSizeInPixle = util->getMapSizeInPixle(); mapLayer->setContentSize(mapSizeInPixle); mapLayer->addChild(baseTileLayer); mapLayer->addChild(tmxLayer); mapLayer->addChild(borderLayer); mapLayer->addChild(commonTileLayer); GameManager::getInstance()->setMapTileLayer(commonTileLayer); mapLayer->setAnchorPoint(Point(0.0f,1.0f)); mapLayer->setPosition(Point(-TILE_WIDTH/2*m_fScaleFactor,m_winSize.height+TILE_HEIGHT/2*m_fScaleFactor)); // if(mapSize.height==9) // { // mapLayer->setAnchorPoint(Point(0.0f,0.5f)); // mapLayer->setPositionY(m_winSize.height/2); // } mapLayer->setScale(GameManager::getInstance()->getScaleFactor()); mapLayer->setZOrder(-1); addUIComponents(); addChild(SettingLayer::getInstance()); addChild(ResultLayer::create()); addChild(mapLayer); }
bool MessagesLayer::init() { if (Layer::init()) { _messages = MessagesService::getInstance()->getMessages(); schedule(schedule_selector(MessagesLayer::doing)); setZOrder(NodeOrder::messagebox); return true; } return false; }
// This function takes following actions: // 1) re-check plane assignment, adjust the assignment to meet // display controller requirement. // 2) after re-checking, try to attach primary a layer as much as possible. // 3) generate a final plane z-order configure for current layer list. // NOTE: current implementation will treat overlay Layer as higher priority. void HwcLayerList::revisit() { bool primaryAvailable = true; // check whether we can take over the layer by using primary // we can use primary plane only when: // 0) Be able to be accepted by primary plane which this list layer // attached to. // 1) all the other layers have been set to OVERLAY layer. if ((mFBLayers.size() == 1)) { HwcLayer *hwcLayer = mFBLayers.itemAt(0); if (check(*mPrimaryPlane, *(hwcLayer->getLayer()))) { log.v("primary check passed for primary layer"); // attach primary to hwc layer hwcLayer->attachPlane(mPrimaryPlane); // set the layer type to primary hwcLayer->setType(HwcLayer::LAYER_PRIMARY); // remove layer from FBLayers mFBLayers.remove(hwcLayer); // add layer to overlay layers mOverlayLayers.add(hwcLayer); } } // attach frame buffer target if (!mPrimaryPlane) { log.w("HwcLayerList::revisit: no primary plane"); return; } if (!mFramebufferTarget) { log.w("HwcLayerList::revisit: no frame buffer target"); return; } if (mFBLayers.size()) { log.v("analyzeFrom: using frame buffer target"); hwc_layer_1_t *layer = mFramebufferTarget->getLayer(); // attach primary plane mFramebufferTarget->attachPlane(mPrimaryPlane); mFramebufferTarget->setType(HwcLayer::LAYER_PRIMARY); // still add it to overlay list mOverlayLayers.add(mFramebufferTarget); } // generate z order config setZOrder(primaryAvailable); }
void Animal::fight(AbstractBattleEntity* entity) { if (canAttack() == false) { return; } _state = AnimalState::Battle; _target = entity; _target->retain(); Vec2 originPoint = getPosition(); Vec2 targetPoint = ZMath::divideInternally(getPosition(), entity->getPosition(), 1, 2); auto size = _image->getContentSize() * getScale(); Vec2 effectPoint = ZMath::divideInternally(getPosition(), entity->getPosition(), 1, 1) + Vec2(0, size.height / 2); _timeline->play("default", false); _stopMoveAction(); _moveAction = runAction(RepeatForever::create(Sequence::create( MoveTo::create(0.1f, targetPoint), CallFunc::create([this, effectPoint]() { // sound effect if (isEnemy() || isOpponent()) { SoundManager::getInstance()->playFight2Sound(); } else { SoundManager::getInstance()->playFightSound(); } // particle effect auto effect = ParticleSystemQuad::create("effect/hit3.plist"); effect->setScale(getScale()); effect->setPosition(effectPoint); effect->setZOrder(100000); effect->setAutoRemoveOnFinish(true); auto parent = getParent(); if (parent) { parent->addChild(effect); } }), MoveTo::create(0.3f, originPoint), DelayTime::create(0.5f), NULL ))); _moveAction->retain(); if (startFightCallback) { startFightCallback(this, _target); } }
// Starts playing a given animation (or nothing if this animation is already playing) void CocosSpriteActorView::playAnimation(const std::string &name) { if (name != _currentAnimation) { SpriteActorView::playAnimation(name); if (_currentAnimation != "") { // Sprite wasn't created yet. Create and set parameters if (!_ccSprite) { _ccSprite = CCSprite::spriteWithSpriteFrame(((CocosAnimation *)_animations[_currentAnimation].get())->getFirstFrame()); if (_ccSprite) { setPosition(getPosition()); setAngle(getAngle()); setScale(getScale()); setZOrder(getZOrder()); setVisible(isVisible()); setAlpha(getAlpha()); } } // The sprite was created, change texture if (_ccSprite) { bool isAnimation = _animations[_currentAnimation]->getFrameCount() > 1; CCSpriteFrame *frame = ((CocosAnimation *)_animations[_currentAnimation].get())->getFirstFrame(); _ccSprite->setTexture(frame->getTexture()); CCRect frameRect = frame->getRectInPixels(); if (isAnimation) { frameRect.origin = frame->getOffsetInPixels(); } _ccSprite->setTextureRect(frameRect); _ccSprite->setDisplayFrame(frame); // If this animation contains more than one frame, play the animation if (isAnimation) { _ccSprite->runAction(((CocosAnimation *)_animations[_currentAnimation].get())->getAnimationAction()); } } } } }
bool Agent::beDropped() { AgentRef wascarriedby = carriedby; carriedby = AgentRef(0); bool wasinvehicle = invehicle; invehicle = AgentRef(0); // TODO: this doesn't reorder children or anything.. setZOrder(zorder); // TODO: no idea if this is right, it tries to re-enable gravity when dropping agents falling = true; /* if our carrying agent was in a vehicle, we stay in the vehicle */ if (wascarriedby && wascarriedby->invehicle) { wascarriedby->invehicle->addCarried(this); // TODO: how to handle not-invehicle case, where vehicle has failed to pick us up? if (invehicle) return true; } if (!wasinvehicle) { // ie, we're not being dropped by a vehicle // TODO: check for vehicles in a saner manner? for (std::list<boost::shared_ptr<Agent> >::iterator i = world.agents.begin(); i != world.agents.end(); i++) { boost::shared_ptr<Agent> a = (*i); if (!a) continue; Vehicle *v = dynamic_cast<Vehicle *>(a.get()); if (!v) continue; /* check whether our *centre* lies inside the vehicle cabin */ int xpt = x + getWidth() / 2; if (xpt >= v->x + v->cabinleft && xpt <= v->x + v->cabinright) { int ypt = y + getHeight() / 2; if (ypt >= v->y + v->cabintop && ypt <= v->y + v->cabinbottom) { v->addCarried(this); // TODO: how to handle not-invehicle case, where vehicle has failed to pick us up? if (invehicle) return true; } } } } if (engine.version > 1) { // TODO: maybe think about this some more - does this belong here? tryMoveToPlaceAround(x, y); } // TODO: return value is not used anywhere yet? return true; }
void GameScene::createPlayerItem(cocos2d::Ref *pSender) { auto mapObj = static_cast<MapObject*>(pSender); auto row = mapObj->getRow(),col = mapObj->getCol(); //mapObj->release(); auto itemId = rand()%5; if(itemId<5) { auto playerItemType = GameManager::getInstance()->getPlayerItems().at(itemId); auto item = PlayerItem::create(); item->setItemType(playerItemType); item->setZOrder(row*10); item->setIdx(itemId); item->setPosition(mapObj->convertCoordinate2Point(Point(col,row))); GameManager::getInstance()->getMapTileLayer()->addChild(item); } }
void HCCWindow::show() { if(m_tips) { //UIPanel* _panel = (UIPanel*)m_tips; //_panel->setBackGroundColorOpacity(0); m_layer->addWidget(m_tips); m_tips->setZOrder(HWindowsManager::S()->getTopZOrder()); setZOrder(m_tips->getZOrder()); UIWidget* m_bg = m_tips->getChildByName("bg"); if (m_autoCenter) { m_bg->setPosition(_pCenter); } if (m_bg) { m_widgetHelper = new HUIWidgetHelper(m_bg); } } HWindowsManager::S()->pushWindow(this); startAnim(); }
void EditorScene::showAlter(const string& msg) { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto alter = EditorText::create(msg, Size(600, 100), 40); alter->setAnchorPoint(Vec2(0.5, 0.5)); alter->setPosition(Vec2(origin.x + visibleSize.width/2, origin.y + visibleSize.height/2)); alter->setZOrder(kAlterPopViewZOrder); this->addChild(alter); alter->setScale(0.5); auto scaleTo = ScaleTo::create(0.2, 1); auto delayTime = DelayTime::create(0.2); auto fadeOut = FadeOut::create(0.2); auto call = CallFunc::create(CC_CALLBACK_0(EditorScene::showAlterDone, this, alter)); alter->runAction(Sequence::create(scaleTo, delayTime, fadeOut, call, NULL)); }
void FloatingEffectManager::init(cocos2d::Layer* layer, LightNodeManager* lightManager) { _layer = layer; _lightManager = lightManager; _lightningNode = DDLightningNode::create(); _lightningNode->setPosition({0,0}); _layer->addChild(_lightningNode); _lightningNode->configWidth(1.5f); _lightningNode->setZOrder(BattleField::Z_FLOATING_EFFECT_LIGHTNING); for (int i = 0; i < NUM_IMGSPS; i++) { auto sp = Sprite::create("images/fe_arrow.png"); sp->setZOrder(BattleField::Z_FLOATING_EFFECT_IMGS); _layer->addChild(sp); sp->setVisible(false); _imgsps.push_back(sp); } }
void EditorScene::addTestLights() { auto sp = Sprite::create("images/test_light.png"); sp->setScale(DDConfig::battleCubeWidth()/sp->getContentSize().width); sp->setPosition({0,0}); sp->setZOrder(Z_LIGHT); sp->setScale(0.25); _presentingLayer->addChild(sp); _testLightIcon = sp; auto listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [this](Touch* touch, Event* event){ bool res = false; auto point = touch->getLocation(); auto size = _testLightIcon->getContentSize(); auto pos = _testLightIcon->getParent()->getPosition()+ _testLightIcon->getPosition(); Rect rect = {pos.x - 0.5f*size.width, pos.y - 0.5f*size.height, size.width, size.height}; if (rect.containsPoint(point)) { res = true; } return res; }; listener->onTouchMoved = [this](Touch* touch, Event* event){ this->clearSelection(); _testLightIcon->setPosition(_testLightIcon->getPosition() + touch->getDelta()); _trianglesNode->updateLightPos(_testLightIcon->getPosition()*0.25); }; listener->onTouchEnded = [this](Touch* touch, Event* event){ }; listener->onTouchCancelled = [this](Touch* touch, Event* event){ }; _pointLayer->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, _pointLayer); }
TETraceResult PathFinder::naviByPath(double dt) { // 如果目标点无效,则不走 if(getTarget().equals(INVALID_POINT)) { //stopAllActions(); setTarget(INVALID_POINT); return eTraceResultFailure; } // 如果下一个路径点在地图外或是墙,则不走(应该不会出现这种情况) CCPoint targetTilePos = _map->realPosToTilePos(getTarget()); if(int(targetTilePos.x + targetTilePos.y) == -2 || _map->getTileType(targetTilePos) == emWall) { //stopAllActions(); setTarget(INVALID_POINT); return eTraceResultFailure; } // 如果已经到达目标点,则寻找下一个目标点 if(getPosition().getDistanceSq(getTarget()) < 1) { //CCLog("reach half way pos"); //stopAllActions(); if(_currPathNode == _shortestPath.size() - 1) { // 如果目标点是最后一个,则寻路结束 //stopAllActions(); setTarget(INVALID_POINT); return eTraceResultSuccess; } else { // 如果目标点后面还有,则继续 //CCLog("go to next pos"); ++_currPathNode; _target = _map->getNaviGraph().getNode(_shortestPath[_currPathNode]).getCenterPos(); CCPoint toTarget = getTarget() - getPosition(); setDirect(_map->getClosestDirect(toTarget.normalize())); } } // 根据不同的方向,执行不同的动作 TEActionState actionState = _walkAnimations->runDirect(this, getDirect(), dt); // 走向目标点 CCPoint tilePos = _map->realPosToTilePos(getPosition()); int tileZorder = tilePos.x + tilePos.y; setZOrder(tileZorder); CCPoint toTarget = getTarget() - getPosition(); toTarget = toTarget.normalize(); setPosition(getPosition() + toTarget * _speed * dt); return eTraceResultHalfway; }
void HWindow::showWindow(){ if(m_tips){ // Layout* _panel = (Layout*)m_tips; // _panel->setSize(Size(_pScreenSize.width, _pScreenSize.height)); // _panel->setBackGroundColorOpacity(128); m_node->addChild(m_tips); m_tips->setZOrder(HWindowsManager::S()->getTopZOrder()); setZOrder(m_tips->getZOrder()); Node* m_bg = m_tips->getChildByName("bg"); if (m_autoCenter) { m_bg->setPosition(Point(_pCenterX,_pCenterY)); } if (m_bg) { m_windowsHelper = new HWindowsHelper(m_bg); } } HWindowsManager::S()->pushWindow(this); setTocuhEnable(false); startAnim(); }
// on "init" you need to initialize your instance bool AboutScene::init() { ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); auto background = Sprite::create("about-content.png"); background->setAnchorPoint(Point(0,0)); background->setPosition(0,0); background->setZOrder(0); this->addChild(background); auto BackButton = MenuItemImage::create("back.png", "back.png", "back.png", CC_CALLBACK_1(AboutScene::Back, this)); BackButton->setPosition(visibleSize.width/2, 90); //BackButton->setScale(1.0); auto buttons = Menu::create(BackButton, NULL); buttons->setPosition(0,0); this->addChild(buttons); return true; }
void GameScene::normalBombHandler(cocos2d::Ref *pSender) { auto manager = GameManager::getInstance(); if(manager->getBombNum()==0) { return; } auto player = manager->getPlayer(); auto coordinate = player->getCoordinate(); auto tile = MapUtil::getInstance()->getMapObjectFromBombVector(MapUtil::getInstance()->getBomb(), coordinate); if(tile&&dynamic_cast<Bomb*>(tile)) { return; } auto bomb = Bomb::create(Bomb::kBombNormal); bomb->setZOrder(0); bomb->setCol(coordinate.x); bomb->setRow(coordinate.y); bomb->setAnchorPoint(Point(0.5f,0.0f)); bomb->setPosition(player->convertCoordinate2Point(coordinate)); GameManager::getInstance()->getMapTileLayer()->addChild(bomb); }
bool SpriteRepeater::initWithTexture(Texture2D* aTexture, int zValue) { if( Sprite::initWithTexture(aTexture) ) { // coordinates int orgX = UtilFunc::getWinSize().width / 2; //int orgY = 0; int orgY = startY; int destY = UtilFunc::getWinSize().height; // set position setPosition(Point(orgX, orgY)); setZOrder(zValue); // set action manager createActionManager(); // action SpriteRepeater::actionSequence(this, orgX, destY); } return true; }
void GamePlay::gameOver(float dt) { // Director::getInstance()->pause(); gameState = End; //invisible frame ready if (frameReady != NULL) { for (int i = 0; i < SUM_NUM; i++) frameReady[i]->setVisible(false); } boardWin = Sprite::create("board.png"); boardWin->setPosition(Vec2(-visibleSize.width / 4, visibleSize.height / 2)); boardWin->setZOrder(30); this->addChild(boardWin); float haflHeight = boardWin->getContentSize().height / 2; float haflWidth = boardWin->getContentSize().width / 2; auto jumpto = JumpTo::create(0.5, Vec2(visibleSize.width / 2, visibleSize.height / 2 - 3 * PADDING), PADDING * 3, 4); boardWin->runAction(jumpto); updatehightestRecord(); if (onSound) CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect( "sound/music_win.ogg"); //congratulation Sprite* congratulation = Sprite::create("congratulation.png"); congratulation->setPosition( Vec2(haflWidth, haflHeight * 2 - 3 * PADDING - congratulation->getContentSize().height)); congratulation->setZOrder(40); boardWin->addChild(congratulation); //highscore Sprite* newhighscore = Sprite::create("newhighscore.png"); newhighscore->setPosition( Vec2(haflWidth, congratulation->getPositionY() - congratulation->getContentSize().height / 2 - newhighscore->getContentSize().height / 2 - 2 * PADDING)); newhighscore->setZOrder(40); boardWin->addChild(newhighscore); //TODO if (timeplay > 0) NativeUtils::submitScore( getLeaderBoard(GamePlay::instance()->getLevel()), timeplay * 1000); if (timeplay > highScore) { newhighscore->setVisible(false); } else { newhighscore->setVisible(true); } //gameover text Sprite* gameovertext = Sprite::create("gameovertext.png"); gameovertext->setPosition( Vec2(4 * PADDING + gameovertext->getContentSize().width / 2, newhighscore->getPositionY() - newhighscore->getContentSize().height / 2 - gameovertext->getContentSize().height / 2 - 2 * PADDING)); gameovertext->setZOrder(40); boardWin->addChild(gameovertext); float sizewidth = gameovertext->getContentSize().width; float sizeheight = gameovertext->getContentSize().height; //show score LabelTTF *currentscore = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); currentscore->setZOrder(50); currentscore->setColor(Color3B(Color3B::BLUE)); showTextTime(currentscore, timeplay); currentscore->setPositionX( sizewidth + PADDING + currentscore->getContentSize().width / 2); currentscore->setPositionY(sizeheight / 2); gameovertext->addChild(currentscore); LabelTTF *highscore = LabelTTF::create("00:00", "fonts/hlvgchac.ttf", 40); highscore->setZOrder(50); highscore->setColor(Color3B(Color3B::BLUE)); showTextTime(highscore, highScore); highscore->setPositionX( sizewidth + PADDING + currentscore->getContentSize().width / 2); highscore->setPositionY(highscore->getContentSize().height / 2); gameovertext->addChild(highscore); std::string miniModeSprite = getLevelString( GamePlay::instance()->getLevel()); Sprite* miniMode = Sprite::create("mini" + miniModeSprite + ".png"); miniMode->setPosition( Vec2( haflWidth * 2 - miniMode->getContentSize().width / 2 - 3 * PADDING, gameovertext->getPositionY() + miniMode->getContentSize().height / 2 + 2 * PADDING)); boardWin->addChild(miniMode); //button ok MenuItemImage* okBtn = MenuItemImage::create("okBtn.png", "okBtn.png", CC_CALLBACK_0(GamePlay::gameCloseWinBoard, this)); auto okMenu = Menu::create(okBtn, nullptr); okMenu->setZOrder(40); okMenu->setPosition( Vec2(haflWidth / 2 + PADDING, gameovertext->getPositionY() - gameovertext->getContentSize().height / 2 - okBtn->getContentSize().height / 2 - 2 * PADDING)); boardWin->addChild(okMenu); //button share MenuItemImage* shareBtn = MenuItemImage::create("shareBtn.png", "shareBtn.png", CC_CALLBACK_0(GamePlay::gameShareWin, this)); auto shareMenu = Menu::create(shareBtn, nullptr); shareMenu->setZOrder(40); shareMenu->setPosition( Vec2(haflWidth * 3 / 2 - PADDING, okMenu->getPositionY())); boardWin->addChild(shareMenu); }