九宫格CCScale9Sprite的使用

来源:互联网 发布:软件评测师含金量 编辑:程序博客网 时间:2024/06/04 18:08


auto glview = Director::getInstance()->getOpenGLView();
 auto visibleOrigin = glview->getVisibleOrigin();
 auto visibleSize = glview->getVisibleSize();
 Size size = Director::getInstance()->getVisibleSize();

 auto moveto = MoveBy::create(1.0,Vec2(30,0));
 auto moveBack = moveto->reverse();
 auto ratateBy = RotateBy::create(1.0,180);
 auto scaleBy = ScaleTo::create(1.0,-2.0);
 auto action = Sequence::create(moveto,moveBack,ratateBy,scaleBy,NULL);

 Sprite* normalSprite1 = Sprite::create("animationbuttonnormal.png");
 normalSprite1->setPosition(100,270);
 normalSprite1->setFlippedY(true);//Y轴反转
 this->addChild(normalSprite1);
 normalSprite1->runAction(action);

 cocos2d::ui::Scale9Sprite* normalSprite2 = cocos2d::ui::Scale9Sprite::create("animationbuttonnormal.png");
 normalSprite2->setPosition(350,270);
 normalSprite2->setFlippedY(true);
 this->addChild(normalSprite2);
 normalSprite2->runAction(action);

 auto action2 = action->clone();
 cocos2d::ui::Scale9Sprite* sp1 = cocos2d::ui::Scale9Sprite::create("animationbuttonnormal.png");
 sp1->setPosition(550,270);
 sp1->setScale(1.2f);
 sp1->setContentSize(Size(100,100));
 sp1->setColor(Color3B::GREEN);
 this->addChild(sp1);
 sp1->runAction((FiniteTimeAction*)action2);//FiniteTimeAction派生出的两个主要类分别是瞬时动作ActionInstant和持续性动作ActionInterval。
 //瞬时动作指能够立刻完成的动作,是FiniteTimeAction中动作持续时间为0的特例。这类动作是在下一帧会立刻执行并完成的动作,如设定位置、设定缩放等。

 cocos2d::ui::Scale9Sprite* sp2 = cocos2d::ui::Scale9Sprite::create("animationbuttonnormal.png");
 sp2->setPosition(550,400);
 sp2->setPreferredSize(sp1->getContentSize() * 1.2f);//setPreferredSize 设置需要生成的尺寸大小
 sp2->setColor(Color3B::GREEN);
 sp2->setContentSize(Size(100,100));//getContentSize函数来获得节点原始的大小。只是逻辑尺寸,不是像素。返回CGSize类型。
 //boundingBox函数来获得经过缩放和旋转之后的外框盒大小,返回CGRect类型。
 //有个问题最近才遇到,父精灵进行缩放处理,会对子精灵进行标记(boolean值),
 //在实际绘制过程中会影响子精灵显示大小,但并不改变子精灵的getBoundingBox所获得的值,也就是只有直接setscale才会影响getBoundingBox数值。
 this->addChild(sp2);
 auto action3 = action->clone();
 sp2->runAction((FiniteTimeAction*)action3);


0 0