Cocos 2d-x Console模块

介绍的文章http://www.cocoachina.com/gamedev/cocos/2014/0704/9028.html

下面我写了一个自己的方法

添加头文件

#include <sys/socket.h>

在HelloWorld::init()添加

//自定义Console命令
    static struct Console::Command commands[] =
    {
        {"setRotation",//命令名称
            "setRotate sprite by spriteTag and angle",//说明
            /*
             回调函数的第一个参数其实就是socket的句柄,使用send向client发送数据,
             第2个参数是命令所带的参数字符串。
             */
            [&](int fd, const std::string& args) {

                this->consoleSetRotation(args);
                //const char msg[] = "how are you?\nArguments passed: ";
                string msg = "run SetRotate "+args +"\n";
                ::send(fd, msg.c_str(), msg.length(),0);
                //Director::getInstance()->getScheduler()->performFunctionInCocosThread(std::bind(&HelloWorld::send));

            }
        },
        
        {"setPosition",//命令名称
            "setPosition sprite by spriteTag and x y",//说明
            /*
             回调函数的第一个参数其实就是socket的句柄,使用send向client发送数据,
             第2个参数是命令所带的参数字符串。
             */
            [&](int fd, const std::string& args) {
                
                this->consoleSetPosition(args);
                //const char msg[] = "how are you?\nArguments passed: ";
                string msg = "run setPosition "+args +"\n";
                ::send(fd, msg.c_str(), msg.length(),0);
                //Director::getInstance()->getScheduler()->performFunctionInCocosThread(std::bind(&HelloWorld::send));
                
            }
        },
    };
    Director::getInstance()->getConsole()->addCommand(commands[0]);
    Director::getInstance()->getConsole()->addCommand(commands[1]);

    
    Director::getInstance()->getConsole()->listenOnTCP(5678);
然后添加函数
void HelloWorld::consoleSetRotation(const string args)
{
    char *s = (char*)args.c_str();
//    const char *d = " ";
//    char *p;
//    p = strtok(s,d);
//    while(p)
//    {
//        printf("%s\n",p);
//        p=strtok(NULL,d);
//    }
    
    const char *d = " ";
    char* _ch;
    _ch = strtok(s, d);
    Sprite* _sprite = (Sprite*)this->getChildByTag(atoi(_ch));
    
    _ch = strtok(NULL, d);

    _sprite->setRotation(atoi(_ch));
}
void HelloWorld::consoleSetPosition(const string args)
{
    char *s = (char*)args.c_str();
    //    const char *d = " ";
    //    char *p;
    //    p = strtok(s,d);
    //    while(p)
    //    {
    //        printf("%s\n",p);
    //        p=strtok(NULL,d);
    //    }
    
    const char *d = " ";
    char* _ch;
    _ch = strtok(s, d);
    Sprite* _sprite = (Sprite*)this->getChildByTag(atoi(_ch));
    
    _ch = strtok(NULL, d);
    _sprite->setPositionX(atoi(_ch));
    
    _ch = strtok(NULL, d);
    _sprite->setPositionY(atoi(_ch));
}


你可能感兴趣的:(Cocos 2d-x Console模块)