コード例 #1
0
ファイル: UISlider.cpp プロジェクト: kaiqinetwork/cocos2d-x
void Slider::copySpecialProperties(Widget *widget)
{
    Slider* slider = dynamic_cast<Slider*>(widget);
    if (slider)
    {
        _prevIgnoreSize = slider->_prevIgnoreSize;
        setScale9Enabled(slider->_scale9Enabled);
        auto barSprite = slider->_barRenderer->getSprite();
        if (nullptr != barSprite)
        {
            loadBarTexture(barSprite->getSpriteFrame());
        }
        auto progressSprite = slider->_progressBarRenderer->getSprite();
        if (nullptr != progressSprite)
        {
            loadProgressBarTexture(progressSprite->getSpriteFrame());
        }
        loadSlidBallTextureNormal(slider->_slidBallNormalRenderer->getSpriteFrame());
        loadSlidBallTexturePressed(slider->_slidBallPressedRenderer->getSpriteFrame());
        loadSlidBallTextureDisabled(slider->_slidBallDisabledRenderer->getSpriteFrame());
        setPercent(slider->getPercent());
        setMaxPercent(slider->getMaxPercent());
        _isSliderBallPressedTextureLoaded = slider->_isSliderBallPressedTextureLoaded;
        _isSliderBallDisabledTexturedLoaded = slider->_isSliderBallDisabledTexturedLoaded;
        _sliderEventListener = slider->_sliderEventListener;
        _sliderEventSelector = slider->_sliderEventSelector;
        _eventCallback = slider->_eventCallback;
        _ccEventCallback = slider->_ccEventCallback;
    }
}
コード例 #2
0
ファイル: AnimationCom.cpp プロジェクト: ElvisQin/genius-x
void AnimationCom::playAnimation(const std::string& name,cocos2d::Node* parent,std::function<void()> callback,const cocos2d::Point& point)
{
    auto iter=animations.find(name);
    if (iter!=animations.end()) {
        auto cache = cocos2d::AnimationCache::getInstance();
        auto animation = cache->getAnimation(name);
        auto action2 = cocos2d::Animate::create(animation);
        
        auto animationFrame=animation->getFrames().at(0);
        
        cocos2d::Sprite* sprite=cocos2d::Sprite::createWithSpriteFrame(animationFrame->getSpriteFrame());
        sprite->setAnchorPoint(iter->second.anchorPoint);
        
        if (point.equals(cocos2d::Point::ZERO)) {
            sprite->setPosition(iter->second.position);
        }
        else{
            sprite->setPosition(point);
        }
        
        sprite->setScale(iter->second.scale.x, iter->second.scale.y);
        sprite->setLocalZOrder(iter->second.localZOrder);
        parent->addChild(sprite);
        
        //animation->setDelayPerUnit(iter->second.delayPerUnit);
        //animation->setLoops(iter->second.loops);
        
        sprite->runAction(cocos2d::Sequence::create(action2, cocos2d::RemoveSelf::create(), NULL));
    }
}
コード例 #3
0
ファイル: UIButton.cpp プロジェクト: DominicD/Hyperdrive
void Button::copySpecialProperties(Widget *widget)
{
    Button* button = dynamic_cast<Button*>(widget);
    if (button)
    {
        _prevIgnoreSize = button->_prevIgnoreSize;
        setScale9Enabled(button->_scale9Enabled);
        auto normalSprite = button->_buttonNormalRenderer->getSprite();
        if (nullptr != normalSprite)
        {
            loadTextureNormal(normalSprite->getSpriteFrame());
        }
        auto clickedSprite = button->_buttonClickedRenderer->getSprite();
        if (nullptr != clickedSprite)
        {
            loadTexturePressed(clickedSprite->getSpriteFrame());
        }
        auto disabledSprite = button->_buttonDisableRenderer->getSprite();
        if (nullptr != disabledSprite)
        {
            loadTextureDisabled(disabledSprite->getSpriteFrame());
        }
        setCapInsetsNormalRenderer(button->_capInsetsNormal);
        setCapInsetsPressedRenderer(button->_capInsetsPressed);
        setCapInsetsDisabledRenderer(button->_capInsetsDisabled);
        if(nullptr != button->getTitleRenderer())
        {
            setTitleText(button->getTitleText());
            setTitleFontName(button->getTitleFontName());
            setTitleFontSize(button->getTitleFontSize());
            setTitleColor(button->getTitleColor());
        }
        setPressedActionEnabled(button->_pressedActionEnabled);
        setZoomScale(button->_zoomScale);
    }

}
コード例 #4
0
ファイル: UIImageView.cpp プロジェクト: c0i/cocos2dx-lite
void ImageView::copySpecialProperties(Widget *widget)
{
    ImageView* imageView = dynamic_cast<ImageView*>(widget);
    if (imageView)
    {
        _prevIgnoreSize = imageView->_prevIgnoreSize;
        setScale9Enabled(imageView->_scale9Enabled);
        auto imageSprite = imageView->_imageRenderer->getSprite();
        if(nullptr != imageSprite)
        {
            loadTexture(imageSprite->getSpriteFrame());
        }
        setCapInsets(imageView->_capInsets);
    }
}
コード例 #5
0
void LoadingBar::copySpecialProperties(Widget *widget)
{
    LoadingBar* loadingBar = dynamic_cast<LoadingBar*>(widget);
    if (loadingBar)
    {
        _prevIgnoreSize = loadingBar->_prevIgnoreSize;
        setScale9Enabled(loadingBar->_scale9Enabled);
        auto barSprite = loadingBar->_barRenderer->getSprite();
        if(nullptr != barSprite)
        {
            loadTexture(barSprite->getSpriteFrame());
        }
        setCapInsets(loadingBar->_capInsets);
        setPercent(loadingBar->_percent);
        setDirection(loadingBar->_direction);
    }
}
コード例 #6
0
ファイル: edcHeroLayer.cpp プロジェクト: sanyuancap/EatDogCat
Action *edcHeroLayer::setHeroAnim(char *aaname,int aaframes,float delayTime)
{
    auto animation = Animation::create();
    for( int i = 1; i <= aaframes ; i++)
    {
        char szName[100] = {0};
//        sprintf(szName, "snake_chick_up_%04d.png", i);
        sprintf(szName,"%s%04d%s",aaname,i,".png");
//        CCLOG("%s",szName);
        auto temp = Sprite::createWithSpriteFrameName(szName);
        animation->addSpriteFrame(temp->getSpriteFrame());
    }
    // should last 0.6 seconds. And there are 4 frames.
    animation->setDelayPerUnit(delayTime / (float)(aaframes));
    animation->setRestoreOriginalFrame(true);
    Action *temp = RepeatForever::create(Animate::create(animation));

    return temp;
}
コード例 #7
0
ファイル: EEConsole.cpp プロジェクト: Senspark/ee-library
bool Console::init() {
    if (not Super::init()) {
        return false;
    }
    auto&& winSize = _director->getWinSize();

    setTouchEnabled(true);
    setSwallowTouches(true);
    setContentSize(cocos2d::Size(winSize.width, 50.0f));

    editBoxDelegate_ = std::make_unique<detail::ConsoleDelegate>(this);

    auto whiteSprite = cocos2d::Sprite::create();
    auto editBoxSprite = cocos2d::ui::Scale9Sprite::createWithSpriteFrame(
        whiteSprite->getSpriteFrame());
    editBoxSprite->setVisible(false);

    auto background = cocos2d::LayerColor::create(cocos2d::Color4B::BLACK);
    background->setContentSize(getContentSize());
    background->setOpacity(100);
    addChild(background);

    editBox_ = cocos2d::ui::EditBox::create(cocos2d::Size(winSize.width, 50.0f),
                                            editBoxSprite);
    editBox_->setSwallowTouches(false);
    editBox_->setAnchorPoint(cocos2d::Vec2::ANCHOR_MIDDLE_TOP);
    editBox_->setPositionPercent(cocos2d::Vec2::ANCHOR_MIDDLE_TOP);
    editBox_->setPositionType(cocos2d::ui::Widget::PositionType::PERCENT);
    editBox_->setInputMode(cocos2d::ui::EditBox::InputMode::SINGLE_LINE);
    editBox_->setInputFlag(
        cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS);
    editBox_->setReturnType(cocos2d::ui::EditBox::KeyboardReturnType::SEND);
    editBox_->setFontSize(20);
    editBox_->setFontName("Arial");
    editBox_->setFontColor(cocos2d::Color4B(200, 200, 200, 255));
    editBox_->setDelegate(editBoxDelegate_.get());
    editBox_->addComponent(ee::DialogComponent::create());
    addChild(editBox_);

    addComponent(ee::DialogComponent::create());
    return true;
}
コード例 #8
0
ファイル: HelloWorldScene.cpp プロジェクト: RosZki/Prinny
void HelloWorld::update(float delta) {
	if (foodCount >=5) {
		hasPowerUp = true;
		foodCount = 0;
		timer = 10;
		this->schedule(schedule_selector(HelloWorld::updateTimer), 1.0f);
		float sizeX = prinny_frames_idle.front()->getOriginalSizeInPixels().width;
		float sizeY = prinny_frames_idle.front()->getOriginalSizeInPixels().height;
		float bgSizeX = background->getContentSize().width;
		float bgSizeY = background->getContentSize().height;
		powerUp = Sprite::createWithSpriteFrame(prinny_frames_idle.front());
		powerUp->runAction(prinny_idle);
		background->addChild(powerUp);
		powerUp->setPosition(generateRandomPosition(sizeX, bgSizeX - sizeX, sizeY, bgSizeY - sizeY));
	}

	if (timer <= 0) {
		hasPowerUp = false;
		background->removeChild(powerUp, true);
		this->unschedule(schedule_selector(HelloWorld::updateTimer));
	}

	auto front = line.front();
	auto position = front->getPosition();

	switch (front->getDirection()) {
	case 0: position.x -= front->getSpriteFrame()->getOriginalSizeInPixels().width + 1;
		break;
	case 1: position.x += front->getSpriteFrame()->getOriginalSizeInPixels().width + 1;
		break;
	case 2: position.y += front->getSpriteFrame()->getOriginalSizeInPixels().height + 1;
		break;
	case 3: position.y -= front->getSpriteFrame()->getOriginalSizeInPixels().height + 1;
		break;
	default:
		break;
	}
	if (CollisionWithDeath()) {
		game_over_label->setVisible(true);
		cocos2d::Director::getInstance()->pause();
		return;
	}
	if (CollisionWithPowerUp()) {
		hasPowerUp = false;
		background->removeChild(powerUp, true);
		this->unschedule(schedule_selector(HelloWorld::updateTimer));
		score += 500;
		score_value_label->setString(std::to_string(score));

		cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread(CC_CALLBACK_0(HelloWorld::playRandomPrinnySound, this));
	}
	if (CollisionWithFood()) {
		float sizeX = prinny_frames_idle.front()->getOriginalSizeInPixels().width;
		float sizeY = prinny_frames_idle.front()->getOriginalSizeInPixels().height;
		float bgSizeX = background->getContentSize().width;
		float bgSizeY = background->getContentSize().height;
		food->setPosition(generateRandomPosition(sizeX, bgSizeX - sizeX, sizeY, bgSizeY - sizeY));
		if (!hasPowerUp) {
			foodCount++;
		}
		cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread(CC_CALLBACK_0(HelloWorld::playRandomPrinnySound, this));
		totalFoodCount++;
		score += 50;
		score_value_label->setString(std::to_string(score));
		addNewMember();
		if (totalFoodCount % 3 == 0) {
			auto interval = 10 + totalFoodCount/3;
			cocos2d::Director::getInstance()->setAnimationInterval(1.0 / interval);
			level++;
			level_value_label->setString(std::to_string(level));
		}
	}
	else{
		for (int i = line.size() - 1; i >= 1; i--) {
			auto prev = line.at(i - 1);
			auto curr = line.at(i);

			if (prev->getDirection() != curr->getDirection()) {
				auto new_dir = prev->getDirection();
				switch (new_dir) {
				case 0: curr->setDirection(new_dir, RepeatForever::create(Animate::create(Animation::createWithSpriteFrames(prinny_frames_left, 1.0f / 8))));
					break;
				case 1: curr->setDirection(new_dir, RepeatForever::create(Animate::create(Animation::createWithSpriteFrames(prinny_frames_right, 1.0f / 8))));
					break;
				case 2: curr->setDirection(new_dir, RepeatForever::create(Animate::create(Animation::createWithSpriteFrames(prinny_frames_up, 1.0f / 8))));
					break;
				case 3: curr->setDirection(new_dir, RepeatForever::create(Animate::create(Animation::createWithSpriteFrames(prinny_frames_down, 1.0f / 8))));
					break;
				default:
					break;
				}
			}
			curr->setPosition(prev->getPosition());
		}
		
		front->setPosition(position);
	}
}
コード例 #9
0
void GameScene_Box2D::initPhysics()
{
    b2Vec2 gravity = b2Vec2(0, -9.8);    //重力を作成
    _world = new b2World(gravity);       //Worldを作成
    b2DestructionListener *listener;
    _world->SetDestructionListener(listener);
   // _world->SetDestructionListener(this);
    
    _debugDraw = new GLESDebugDraw( PTM_RATIO );
    _world->SetDebugDraw(_debugDraw);
    
    const b2ParticleSystemDef particleSystemDef;
    //particleSystemDef->flags = b2_waterParticle;
    
    _particleSystem = _world->CreateParticleSystem(&particleSystemDef);
    //_particleSystem->SetRadius(50/PTM_RATIO);
    
    b2ParticleGroupDef groupDef;
    //groupDef.flags = b2_waterParticle;
    _particleGroup = _particleSystem->CreateParticleGroup(groupDef);
    
    
    
    uint32 flags = 0;
    flags += b2Draw::e_shapeBit;
    //flags += b2Draw::e_particleBit;
    //        flags += b2Draw::e_jointBit;
    //        flags += b2Draw::e_aabbBit;
    //        flags += b2Draw::e_pairBit;
    //        flags += b2Draw::e_centerOfMassBit;
    _debugDraw->SetFlags(flags);
    
    //画面サイズサイズを取得
    auto window_size = Director::getInstance()->getWinSize();
    
    //床
    auto floor = cocos2d::extension::PhysicsSprite::create();
    floor->setTextureRect(Rect(0,0,window_size.width,100));
    _floor = floor->getSpriteFrame()->getRect();
    auto size = floor->getContentSize();
   
    b2BodyDef bodyDef;
    bodyDef.type = b2_staticBody;
    bodyDef.position.Set(0, -size.height/PTM_RATIO);
    b2Body *body = _world->CreateBody(&bodyDef);
    
    b2PolygonShape dynamicBox;
    dynamicBox.SetAsBox(size.width/PTM_RATIO, size.height/PTM_RATIO);
    
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &dynamicBox;
    fixtureDef.density = 1.0f;
    body->CreateFixture(&fixtureDef);
    floor->setColor(Color3B(255,255,255));
    floor->setTag(spriteType::kFloor);
    
   // addChild(floor);
    
    auto left_wall =  cocos2d::extension::PhysicsSprite::create();
    left_wall->setTextureRect(Rect(10,window_size.height/2,10,window_size.height*2));
    //left_wall->setPosition(Vec2(10, window_size.height/2));
    left_wall->setColor(Color3B(255,255,255));
    _leftwall = left_wall->getSpriteFrame()->getRect();
    bodyDef.type = b2_staticBody;
    bodyDef.position.Set(0, 0);
    b2Body *bodyleft = _world->CreateBody(&bodyDef);
    
    b2PolygonShape dynamicBoxleft;
    dynamicBoxleft.SetAsBox(10/PTM_RATIO, window_size.height*2/PTM_RATIO);
    
    b2FixtureDef fixtureDefleft;
    fixtureDefleft.shape = &dynamicBoxleft;
    fixtureDefleft.density = 1.0f;
    bodyleft->CreateFixture(&fixtureDefleft);

    auto right_wall =  cocos2d::extension::PhysicsSprite::create();
    right_wall->setTextureRect(Rect(window_size.width,window_size.height/2,10,window_size.height*2));
    size = right_wall->getContentSize();
    bodyDef.type = b2_staticBody;
    bodyDef.position.Set(window_size.width/PTM_RATIO, 0);
    b2Body *bodyright_wall = _world->CreateBody(&bodyDef);
    
    b2PolygonShape dynamicBoxright_wall;
    dynamicBoxright_wall.SetAsBox(10/PTM_RATIO, window_size.height*2/PTM_RATIO);
    
    b2FixtureDef fixtureDefright;
    fixtureDefright.shape = &dynamicBoxright_wall;
    fixtureDefright.density = 1.0f;
    bodyright_wall->CreateFixture(&fixtureDefright);

    right_wall->setColor(Color3B(255,255,255));
    _rightwall = right_wall->getSpriteFrame()->getRect();
    //addChild(right_wall);
    
    _ceil = Rect(window_size.width/2, window_size.height - 200, window_size.width, 100);
    

}
コード例 #10
0
bool GameScene_Chipmunk::init()
{
    if ( !Scene::init() ) {
        return false;
    }
    
   
    
    //画面サイズサイズを取得
    auto window_size = Director::getInstance()->getWinSize();
    
    //床
    auto floor = Sprite::create();
    floor->setPosition(window_size.width/2, 0);
    floor->setTextureRect(Rect(0,0,window_size.width,100));
    floor->setColor(Color3B(255,255,255));
    floor->setTag(spriteType::kFloor);
    _floor = floor->getSpriteFrame()->getRect();
    
    auto left_wall =  Sprite::create();
    left_wall->setPosition(10, window_size.height/2);
    left_wall->setTextureRect(Rect(0,0,10,window_size.height*2));
    left_wall->setColor(Color3B(255,255,255));
    _leftwall = left_wall->getSpriteFrame()->getRect();
    
    auto right_wall =  Sprite::create();
    right_wall->setPosition(window_size.width, window_size.height/2);
    right_wall->setTextureRect(Rect(0,0,10,window_size.height*2));
    right_wall->setColor(Color3B(255,255,255));
    _rightwall = right_wall->getSpriteFrame()->getRect();
    
    _ceil = Rect(window_size.width/2, window_size.height - 200, window_size.width, 20);
    
    //wall->setRotation(10.0f);
    //反発係数と摩擦係数
    auto material = PHYSICSBODY_MATERIAL_DEFAULT;
    material.restitution = 0.0f;
    material.friction = 1.0f;
    
    auto pWall = PhysicsBody::createBox(floor->getContentSize(), material);
    //重力干渉を受けるか
    pWall->setDynamic(false);
    //回転させるか
    pWall->setRotationEnable(false);
    pWall->setContactTestBitmask(true);
    floor->setPhysicsBody(pWall);
    addChild(floor);
    
    auto pright_wall = PhysicsBody::createBox(right_wall->getContentSize(), material);
    //重力干渉を受けるか
    pright_wall->setDynamic(false);
    //回転させるか
    pright_wall->setRotationEnable(false);
    right_wall->setPhysicsBody(pright_wall);
    addChild(right_wall);
    
    auto pleft_wall = PhysicsBody::createBox(left_wall->getContentSize(), material);
    //重力干渉を受けるか
    pleft_wall->setDynamic(false);
    //回転させるか
    pleft_wall->setRotationEnable(false);
    left_wall->setPhysicsBody(pleft_wall);
    addChild(left_wall);
    
    
    //event listener
    //イベントリスナー作成
    auto listener = EventListenerTouchAllAtOnce::create();
    
    //イベントを飲み込むかどうか
    //listener->setSwallowTouches(true);
    
    //タッチメソッド設定
    listener->onTouchesBegan = CC_CALLBACK_2(GameScene_Chipmunk::onTouchesBegan, this);
    listener->onTouchesMoved = CC_CALLBACK_2(GameScene_Chipmunk::onTouchesMoved, this);
    listener->onTouchesEnded = CC_CALLBACK_2(GameScene_Chipmunk::onTouchesEnded, this);
    //this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
    
    //優先度100でディスパッチャーに登録
    this->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 100);
    
    //衝突検知
    auto plistener = EventListenerPhysicsContact::create();
    plistener->onContactBegin = CC_CALLBACK_1(GameScene_Chipmunk::onContactBegin, this);
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(plistener, this);
    
    auto plistenerend = EventListenerPhysicsContact::create();
    plistenerend->onContactPostSolve = CC_CALLBACK_2(GameScene_Chipmunk::onContactPostSolve, this);
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(plistenerend, this);
    
    this->fillBoll();
    
    scheduleUpdate();
    
    return true;
}