如果动画里只有一个Sprite,用COCOS导出后用类似的code就可以播放
auto beauty = CSLoader::createNode(filename);
rootNode->addChild(beauty,10);
ui::Helper::doLayout(beauty);
Sprite* aSprite = dynamic_cast<Sprite*>(beauty->getChildByName("beautySprite"));
ActionTimeline *action = CSLoader::createTimeline(filename);
aSprite->runAction(action);
action->pause();
action->gotoFrameAndPlay(0,false);
一个动画里如果有2个Sprite应该怎么做?哪里有例子
ActionTimeline *action = CSLoader::createTimeline(filename);
应该是不行了吧。
我现在用COCOS弄了个对话框动画,底层丢了个Panel,上面是一个背景和一段文字,分别进行放大缩小之类的简单动画。
auto dialog = CSLoader::createNode("dialog.csb");
rootNode->addChild(dialog,10);
ui::Helper::doLayout(dialog);
auto panel = dynamic_cast<cocos2d::ui::Layout*>(dialog->getChildByName("Panel_1"));
Sprite* cloud = dynamic_cast<Sprite*>(panel->getChildByName("dialogSprite"));
cocos2d::ui::Text* msgLabel = dynamic_cast<cocos2d::ui::Text*>(panel->getChildByName("dialogLabel"));
msgLabel->setString(msg2Show);
cocostudio::timeline::ActionTimeline *action = dynamic_cast<cocostudio::timeline::ActionTimeline*>(panel->getActionByTag(cloud->getTag()));
cloud->runAction(action);
action->pause();
action->gotoFrameAndPlay(0,false);
cocostudio::timeline::ActionTimeline *action2 = dynamic_cast<cocostudio::timeline::ActionTimeline*>(dialog->getActionByTag(msgLabel->getTag()));
msgLabel->runAction(action2);
action2->pause();
action2->gotoFrameAndPlay(0,false);
但是无法获得动画ActionTimeline, 无论从Node一级还是Panel读到的action都是NULL
dynamic_cast<cocostudio::timeline::ActionTimeline*>(panel->getActionByTag(cloud->getTag()));
dynamic_cast<cocostudio::timeline::ActionTimeline*>(dialog->getActionByTag(msgLabel->getTag()));
也找不到合适的例子学习,有人教学下么?