Cocos2d-X循环背景效果

准备一张两边可循环连接的图,使用下面代码即可实现~

HelloWorld::bd(0, 0, 98);
HelloWorld::bd(0, 2130, 99);
this->schedule(schedule_selector(HelloWorld::move));
void HelloWorld::bd(float num, int w, int tag)
{
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    float x = size.width, y = size.height + origin.y;

    CCSprite *background = CCSprite::create("bg.png");
    background->setAnchorPoint(CCPoint(0, 0.5));
    background->setPosition(CCPoint(background->getContentSize().width*num + w, y / 2));
    this->addChild(background, tag, tag);
}

void HelloWorld::move(float time)
{
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    float x = size.width, y = size.height + origin.y;

    CCNode *bg1 = CCNode::getChildByTag(99);
    CCSprite *sp1 = (CCSprite*)bg1;

    CCNode *bg2 = CCNode::getChildByTag(98);
    CCSprite *sp2 = (CCSprite*)bg2;

    sp1->setPosition(CCPoint(sp1->getPositionX() - 0.5, sp1->getPositionY()));
    sp2->setPosition(CCPoint(sp2->getPositionX() - 0.5, sp2->getPositionY()));
    if (sp1->getPositionX() <= -sp1->getContentSize().width) sp1->setPosition(CCPoint(sp1->getContentSize().width, y / 2));
    if (sp2->getPositionX() <= -sp2->getContentSize().width) sp2->setPosition(CCPoint(sp2->getContentSize().width, y / 2));
}
时间: 2024-11-17 18:54:15

Cocos2d-X循环背景效果的相关文章

cocos2d JS 设置字幕循环滚动(背景图滚动亦可)

1 var dong = ccs.load("res/Login.json"); 2 this.addChild(dong.node); 3 4 this.cShamNotice = ccui.helper.seekWidgetByName(dong.node,"cShamNotice"); //字幕背景框 5 this.cShamNotice.setVisible(false); 6 var str = "请各位玩家文明娱乐,远离赌博.如发现有赌博行为,

cocos2d::Vector

v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中. template<class T>class CC_DLL Vector; cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中的标准顺序容器std::vector. 在Cocos2d-x v3.

cocos2d 播放GIF动画类

cocos2d 播放GIF动画类 以前项目中曾经用到过,后来因为GIF图像的质量较差,被弃用了,把公司名字去掉分享下,根据网上资料改编的cocos2d-iphone版的. // // CCSpriteGif.h // // Created by Yuming on 13-1-23. // Copyright 2013年 __MyCompanyName__. All rights reserved. // // 本类需要导入ImageIO.framework #import <Foundation

Cocos2d 播放音效

Cocos2D对音乐/音效播放的封装已经很好了,下边是例子: 定义2个文件: [cpp] view plaincopy #define MUSIC_FILE        "LOLBgMusic.mp3" #define EFFECT_FILE      "Attack.wav" 在初始化的时候预加载音乐/音效文件: [cpp] view plaincopy //预加载 CocosDenshion::SimpleAudioEngine::sharedEngine()

cocos2d基本类介绍 director/scene/layer/sprite

[核心类]     导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步:     导演控制场景,场景控制图层,图层控制精灵,精灵控制动作.     相互之间的关系框架如下图所示:     由此看出:         (1)整个游戏一般只有一个导演.         (2)一个游戏可以由多个场景组成(菜单界面.游戏界面.游戏结束界面等),但是每次导演只能指导一个场景的运作.         (3)一个场景可以由多个图层组成(背景层.道具层.英雄层.怪物层等,每个图

cocos2D(三)---- 第一cocos2d的程序代码分析

在第一讲中已经新建了第一个cocos2d程序,执行效果例如以下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是怎样显示出来的. 这是HelloWorld项目的代码结构: 以下,我们開始分析项目中的这些源文件: 从程序的入口点開始 这么多源文件在这里,到底先看哪个呢?有些人可能会先挑内容少的来看,认为这样就能够轻松解决掉一个源文件了.事实上这是不正确的,这样看起来更加是一头雾水,根本搞不清楚每一个源文件之间的联系.正确的做法应

Cocos2D-Android-1之源码详解:1.Cocos2D

/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      htt

4.帧循环(游戏循环),schedule

 1 概述 游戏乃至图形界面的本质是不断地画图,然而画图并非任意的,不论什么游戏都须要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑.游戏逻辑会控制游戏内容,使其依据用户输入和时间流逝而改变.因此.游戏能够抽象为不断地反复. 2 下面动作: A 处理用户输入 B 处理定时事件 C 画图 游戏主循环就是这种一个循环,它会重复运行以上动作,保持游戏进行下去.直到玩家退出游戏. CCDirector::mainLoop()方法,这种方法负责调动定时器,画图,发送全局通知,并处理内存回收池.该方

Cocos2d-x3.0下实现循环列表

本文的实现是參照我之前在做iOS时实现的一个能够循环的列表这里用C++重写一遍. 效果: 原文地址:http://blog.csdn.net/qqmcy/article/details/27393011 用法:能够使用创建project时的HelloWorld測试 ,h文件里加入循环列表的监听回调 void djInfiniteScroll(Ref* sender); .cpp #include "DJInfiniteScrollPicker.h" DJInfiniteScrollPi