<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tsbyj的博客]]></title><description><![CDATA[好好学习，天天向上。]]></description><link>https://blog.youkuaiyun.com/tsbyj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tsbyj]]></copyright><item><title><![CDATA[Cocos2d-x中，如何更快地加载大量重复粒子]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47971427</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47971427</guid><author>tsbyj</author><pubDate>Tue, 25 Aug 2015 08:37:43 +0800</pubDate><description><![CDATA[上次看一个教程，是用ClippingNode,Image和粒子，写的一个能把图片一点一点消除的程序，而且消除的时候会在消除的部分创建一个相同颜色的粒子效果，看起来还是挺炫的。
不过遇到了一个问题，教程上是每次都通过文件创建粒子，实际上这样创建的话，如果图片比较大，那么需要创建非常多非常多的粒子，就会造成卡顿。
通过翻看代码，发现ParticleSystemQuad类有一个创建函数如下：
st]]></description><category></category></item><item><title><![CDATA[使用欧拉筛法求素数和]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47906585</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47906585</guid><author>tsbyj</author><pubDate>Mon, 24 Aug 2015 17:22:47 +0800</pubDate><description><![CDATA[上一次写到了厄拉多塞筛法，说到厄拉多塞筛法随着计算上限的成倍增加，计算时间也会成倍增加。
这次的欧拉筛法在时间这方面会比厄拉多塞筛法好很多。]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，ProgressTimer类的用法]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47922259</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47922259</guid><author>tsbyj</author><pubDate>Sun, 23 Aug 2015 23:58:39 +0800</pubDate><description><![CDATA[ProgressTimer类继承于Node.
ProgressTimer类的create函数定义如下：
static ProgressTimer* create(Sprite* sp);
可以看出它是通过Sprite类对象创建的。
它有两个Type：
enum class Type
{
    RADIAL,/** Radial Counter-Clockwise. */
    BAR]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，ProgressTo类的使用]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47907697</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47907697</guid><author>tsbyj</author><pubDate>Sun, 23 Aug 2015 17:58:55 +0800</pubDate><description><![CDATA[ProgressTo类继承于ActionInterval类，所以是一个间隔动作。
API文档中对其描述如下：
Progress to percentage.

简单的我已经懒得吐槽了。
还是看看官方的示例吧，示例的代码如下：
    auto s = Director::getInstance()->getWinSize();

    auto to1 = Sequence::cre]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，Speed类的使用]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47904549</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47904549</guid><author>tsbyj</author><pubDate>Sun, 23 Aug 2015 12:33:15 +0800</pubDate><description><![CDATA[跟Follow类一样，Speed类也是直接继承于Action类的。
API文档中，对Speed类的解释如下：
Changes the speed of an action, making it take longer (speed>1) or less (speed

Speed类的Create函数如下：
static Speed* create(ActionInterval* acti]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，Follow类的使用]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47867307</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47867307</guid><author>tsbyj</author><pubDate>Sat, 22 Aug 2015 23:58:52 +0800</pubDate><description><![CDATA[Follow类是直接继承自Action类的，地位很高啊。
API文档中对于它的作用介绍如下：
Follow is an action that "follows" a node.

还是一贯的言简意赅。
Follow类的Create函数如下：
static Follow* create(Node *followedNode, const Rect& rect = Rect::ZERO)]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，ActionInstant类的各个子类]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47831231</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47831231</guid><author>tsbyj</author><pubDate>Fri, 21 Aug 2015 10:52:52 +0800</pubDate><description><![CDATA[API文档中，ActionInstant类的解释是这样的：
Instant actions are immediate actions.
Inherits FiniteTimeAction.
Inherited by CallFunc, FlipX, FlipY, Hide, Place, RemoveSelf, ReuseGrid, Show, StopGrid, and ToggleVi]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，ControlSlider的基本用法]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47675605</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47675605</guid><author>tsbyj</author><pubDate>Sat, 15 Aug 2015 02:06:48 +0800</pubDate><description><![CDATA[ControlSlider是一个可滑动的控件，有一个背景，一个前景，一个可滑动的按钮组成。
下面是它的create函数：
//使用图片创建
static ControlSlider* create(const char* bgFile, const char* progressFile, 
	const char* thumbFile);
	
//使用精灵创建
static ControlSl]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，使用Image类获取图片某一点的颜色]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47463097</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47463097</guid><author>tsbyj</author><pubDate>Thu, 13 Aug 2015 00:07:16 +0800</pubDate><description><![CDATA[要获取图片的某一点的颜色，先要创建Image对象。
Image* test = new Image();
//使用图片名初始化Image
test->initWithImageFile("test.png");
Image会开辟一段内存用来存储图片的颜色信息。存储的方法是每一像素点用4个字节来存储，其中4个字节分别存储了颜色的R\G\B\A,也就是红、绿、蓝和透明度。
由于在32位的情况下，]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，在过渡场景异步加载图片和声音]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47423329</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47423329</guid><author>tsbyj</author><pubDate>Tue, 11 Aug 2015 17:06:47 +0800</pubDate><description><![CDATA[游戏需要在过渡场景中完成对资源的加载。
对于图片的加载，可以使用TextureCache::addImageAsync或是TextureCache::addImage加载。
TextureCache::addImage为同步加载，其会在主线程中进行图片加载，这就有可能在加载时间比较长时，阻塞主线程。

TextureCache::addImageAsync为异步加载，其在加载时会创建新的线]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，创建Animate的几种方法]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47417225</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47417225</guid><author>tsbyj</author><pubDate>Tue, 11 Aug 2015 11:03:35 +0800</pubDate><description><![CDATA[可以把常见的Animate的创建方法封装成几个函数，在使用时进行调用。
第一种方法使用do...while循环实现，不需要知道图片的数量，只要有图片的名字就可以，代码如下：
Animate* Create(const char *iName, int iloops, float delay)
{
	SpriteFrame* frame = NULL;
	Animation* animation]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，反转横板游戏里的主角]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47402451</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47402451</guid><author>tsbyj</author><pubDate>Mon, 10 Aug 2015 18:01:27 +0800</pubDate><description><![CDATA[有些横板游戏中的主角需要既能往前跑，也能往后跑。
此时并不需要两套素材和两个精灵。只需要使用精灵的setFlippedX函数即可完成，并且使用精灵进行的动画也都可以实现水平翻转。
一个小例子如下：
bool HelloWorld::init()
{
	if ( !Layer::init() )
	{
		return false;
	}
	Size visibleSize = Directo]]></description><category></category></item><item><title><![CDATA[Lua中，泛型for循环遍历table时，ipairs和pairs的区别]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47302611</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47302611</guid><author>tsbyj</author><pubDate>Wed, 05 Aug 2015 20:32:18 +0800</pubDate><description><![CDATA[为了看出两者的区别，首先定义一个table:
a={"Hello","World";a=1,b=2,z=3,x=10,y=20;"Good","Bye"}使用ipairs对其进行遍历：
for i, v in ipairs(a) do
	print(v)
end输出的结果是：
Hello
World
Good
Bye

可见ipairs并不会输出table中存储的键值对，会跳过键值]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，实现类似捕鱼达人的炮台]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47300643</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47300643</guid><author>tsbyj</author><pubDate>Wed, 05 Aug 2015 17:28:50 +0800</pubDate><description><![CDATA[要实现一个炮台，可以先把子弹放一边，把炮台的事给搞定。
炮台需要做的就是当点击屏幕上某一点时，炮台会旋转，并且指向该点。
把旋转的方法写到onTouchBegan里面即可，代码如下：
bool HelloWorld::onTouchBegan(Touch* touch, Event* event){
	//获取点击的位置
	touchPoint = touch->getLocation();]]></description><category></category></item><item><title><![CDATA[使用厄拉多塞筛法计算素数的和]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47254069</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47254069</guid><author>tsbyj</author><pubDate>Mon, 03 Aug 2015 11:52:45 +0800</pubDate><description><![CDATA[求N以内所有素数的和，最普通的方法是对N以内所有自然数进行一次是否为素数的判断，然后将所有素数相加。
然而对某个自然数s是否为素数的判断是相当费时间的，需要判断其是否可以整除0到s^0.5之间的所有自然数，如果s很大的话，这将相当耗时。
两千多年前的数学家厄拉多塞提出的厄拉多塞筛法可以一定程度上减少计算素数和时的工作量。
维基百科上埃拉托斯特尼筛法词条中有一个很直观的示意图，如下：]]></description><category></category></item><item><title><![CDATA[如何判断一个自然数是否为素数]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47205597</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47205597</guid><author>tsbyj</author><pubDate>Sun, 02 Aug 2015 11:36:06 +0800</pubDate><description><![CDATA[判断一个自然数是否为素数，最先想到的是根据素数的定义，对自然数n,求2到n-1之中是否有某个数可以被n整除，如果没有则可判定其为素数，如果有则为合数。
实际判断中，并不需要判断这么多数，只要判断2到根号n之间的自然数即可。
代码如下：
#include 
#include 

using namespace std;

int main()
{
    int n;
    while(ci]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，addObserver如何传递消息]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47107029</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47107029</guid><author>tsbyj</author><pubDate>Tue, 28 Jul 2015 16:45:07 +0800</pubDate><description><![CDATA[addObserver这个函数一般是用来接收消息的，但是这个函数的定义如下：
void __NotificationCenter::addObserver(Ref *target, 
                                       SEL_CallFuncO selector,
                                       const]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，使用NotificationCenter在Layer之间传输数据]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47103559</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47103559</guid><author>tsbyj</author><pubDate>Tue, 28 Jul 2015 12:39:00 +0800</pubDate><description><![CDATA[使用NotificationCenter在同场景的不同层之间传输数据：
1.在第一个层里添加发送消息的函数
bool HelloWorld::init()
{
	scheduleOnce(schedule_selector(HelloWorld::sendMsg), 3.0f);
	//在3秒后调用sendMsg函数

	return true;
}

void HelloWorld::sen]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，onEnter与init的区别]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47088575</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47088575</guid><author>tsbyj</author><pubDate>Mon, 27 Jul 2015 18:01:47 +0800</pubDate><description><![CDATA[这个问题我百度了下，没有找到好的答案，google了一下，找到了我想要的答案，都是很简单的英文，不翻译了。
原链接：
https://stackoverflow.com/questions/20769747/difference-between-cclayerinit-and-cclayeronenter/20773133#20773133


Cocos2d-x has its mem]]></description><category></category></item><item><title><![CDATA[Cocos2d-x中，如何通过触摸来移动一个精灵]]></title><link>https://blog.youkuaiyun.com/tsbyj/article/details/47083397</link><guid>https://blog.youkuaiyun.com/tsbyj/article/details/47083397</guid><author>tsbyj</author><pubDate>Mon, 27 Jul 2015 12:46:26 +0800</pubDate><description><![CDATA[Cocos2d-x中，如何通过按住一个精灵移动手指，使精灵跟随手指移动，方法如下：
首先添加精灵，定义触摸事件
bool HelloWorld::init()
{
	if ( !Layer::init() )
	{
		return false;
	}

	ball = Sprite::create("Ball.png");
	
	auto listener = EventListenerTo]]></description><category></category></item></channel></rss>