九宫格CCScale9Sprite的使用

本文介绍了如何在Cocos2d-x中使用Scale9Sprite创建可伸缩的精灵,并通过Action实现移动、旋转和缩放的动画效果。示例代码展示了如何设置精灵的初始状态、应用动作以及如何克隆和重复动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值