bool CSmeltArmor::init() { if (BaseLayer::init()) { m_ui = LoadComponent("RinseItem.xaml"); // m_ui->setPosition(VCENTER); this->addChild(m_ui); this->setIsShowBlack(false); m_attr = (CLayout*)m_ui->findWidgetById("attr"); //获取cell m_pCellInfo = (CLayout*)m_ui->findWidgetById("cell_info"); CC_SAFE_RETAIN(m_pCellInfo); m_pCellInfo->removeFromParentAndCleanup(false); CCPoint pBasePos = ccp(1281, 160); //初始化基础属性四条 initItemInfo(pBasePos, m_pBaseInfo, 4); //添加动画 SkeletonAnimation *pSkeletonAnimation = SkeletonAnimation::createWithFile("strengthen/5002.json", "strengthen/5002.atlas", 1); pSkeletonAnimation->setPosition(ccp(887, -2)); pSkeletonAnimation->setAnimation(0, "stand", true); m_ui->addChild(pSkeletonAnimation, 3); m_pSpineHero = pSkeletonAnimation; return true; } return false; }
bool BatchingExample::init () { if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; // To avoid the SkeletonBatch buffer from being resized, set this to the number of vertices ever rendered in one frame. // BatchingExample needs ~3200, but let's set it low to test the buffer resizing. SkeletonBatch::setBufferSize(512); // Load the texture atlas. _atlas = spAtlas_createFromFile("spineboy.atlas", 0); CCASSERT(_atlas, "Error reading atlas file."); // This attachment loader configures attachments with data needed for cocos2d-x rendering. // Do not dispose the attachment loader until the skeleton data is disposed! _attachmentLoader = (spAttachmentLoader*)Cocos2dAttachmentLoader_create(_atlas); // Load the skeleton data. spSkeletonJson* json = spSkeletonJson_createWithLoader(_attachmentLoader); json->scale = 0.6f; // Resizes skeleton data to 60% of the size it was in Spine. _skeletonData = spSkeletonJson_readSkeletonDataFile(json, "spineboy.json"); CCASSERT(_skeletonData, json->error ? json->error : "Error reading skeleton data file."); spSkeletonJson_dispose(json); // Setup mix times. _stateData = spAnimationStateData_create(_skeletonData); spAnimationStateData_setMixByName(_stateData, "walk", "jump", 0.2f); spAnimationStateData_setMixByName(_stateData, "jump", "run", 0.2f); int xMin = _contentSize.width * 0.10f, xMax = _contentSize.width * 0.90f; int yMin = 0, yMax = _contentSize.height * 0.7f; for (int i = 0; i < 50; i++) { // Each skeleton node shares the same atlas, skeleton data, and mix times. SkeletonAnimation* skeletonNode = SkeletonAnimation::createWithData(_skeletonData, false); skeletonNode->setAnimationStateData(_stateData); skeletonNode->setAnimation(0, "walk", true); skeletonNode->addAnimation(0, "jump", false, 3); skeletonNode->addAnimation(0, "run", true); skeletonNode->setPosition(Vec2( RandomHelper::random_int(xMin, xMax), RandomHelper::random_int(yMin, yMax) )); addChild(skeletonNode); } scheduleUpdate(); EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { Director::getInstance()->replaceScene(SpineboyExample::scene()); return true; }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true; }
void SpineTest::testSimple(Object *sender) { log("testSimple"); SkeletonAnimation *node = SkeletonAnimation::createWithFile("player.json", "player.atlas"); node->setAnimation(0, "walk", true); node->setPosition(Point(200, 200)); addChild(node); }
void SpineTest::testChangeAnimation(Object *sender) { log("testChangeAnimation"); // Setting the Animation SkeletonAnimation *node = SkeletonAnimation::createWithFile("player.json", "player.atlas"); node->setAnimation(0, "walk", true); node->setPosition(Point(200, 120)); node->setTag(kTagSpinePlayer); addChild(node); mAnime = node; // Setting the buttons std::vector<Node *> nodeArray; ControlButton *button; button = GUIHelper::createButton("Walk", this, cccontrol_selector(SpineTest::changeAnime), Point(0, 0)); button->setTag(kTagButtonWalk); nodeArray.push_back(button); button = GUIHelper::createButton("Jump", this, cccontrol_selector(SpineTest::changeAnime), Point(0, 0)); button->setTag(kTagButtonJump); nodeArray.push_back(button); button = GUIHelper::createButton("Hurt", this, cccontrol_selector(SpineTest::changeAnime), Point(0, 0)); button->setTag(kTagButtonHurt); nodeArray.push_back(button); button = GUIHelper::createButton("Idle", this, cccontrol_selector(SpineTest::changeAnime), Point(0, 0)); button->setTag(kTagButtonIdle); nodeArray.push_back(button); GUIHelper::addNodesToParent(this, nodeArray, 0, 50, 480, 10); // hide the menu hideMenu(); }