這是一個8張高山流水的圖片,連續播出?它是垂直的,不是數字片。感謝!
不停的update图片的位置不就行了么。
不知道你要表达什么。。。。
就跟播放动画一样一个图一个帧,连续重复播放就好了嘛
可以用uv滚动的方式
一图一帧?那直接做成帧动画不就好?你需要先把这8张图片切成8张,然后做成合图。
首先不知道楼主想要做什么效果,如果只是这幅图滚动,就用moveto加个判断就好了
如果是想做成动画的话就是一个小图一个帧,不用切成八张,只要根据图片的高度算出每张小图的高度,然后在程序里面写出每一帧显示的图片范围就可以了
切小图的确是个办法,但不是长久之计,最正确的方法就是用合图,不用你去计算高度,不用一张一张添加,合图自动全部搞定。
即省事,又安全。
不过楼主这几张图片看上去貌似一模一样,不知道做成动画有什么意义。
当然用你说的合图是最好的,代码就省,也最方便.
但是如果有很多这样的图片的话要一张一张的切.
楼主这个图片看上去一样的,其实是水流的地方有差别,
我调试了一下就是个水在动的图片.
代码(cocos2dx 3.6):
//加载图片
auto visibleSize = Director::getInstance()->getVisibleSize();
auto texture = Director::getInstance()->getTextureCache()->addImage("liushui.png");//把大图片保存成liushui.png.放到resource目录下
auto imageSize=texture->getContentSize();
auto imageHeigh = imageSize.height / 8;
auto imageWidth = imageSize.width;
//保存图片帧
//Vector array;
Vector array;
for (int i = 0; i < 8; i++){
auto frame = SpriteFrame::createWithTexture(texture, Rect(imageWidth * 0, imageHeigh * i, imageWidth, imageHeigh));
array.pushBack(frame);
}
auto sprite2 = Sprite::createWithSpriteFrame((SpriteFrame*)array.at(0));
sprite2->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
this->addChild(sprite2);
//播放动画
auto animation2 = Animation::createWithSpriteFrames(array, 0.2f); //此处根据容器中的图片帧播放动画,createWithSpriteFrames()函数每帧间隔时间参数,需自行加上去!!!
sprite2->runAction(RepeatForever::create(Animate::create(animation2)));
请把代码粘贴在这里
```