• cocos遥感器的实现


      lis->onTouchMoved=[=](Touch* ptouch, Event* pevent)

        {

            //cocos2d拖动按钮及遥感器的实现;

            Vec2 p=ptouch->getLocation();

            auto p1=this->convertToNodeSpace(p);

            float v=sp->getContentSize().width/2;

           float s=p1.distance(sp->getPosition());

            log(",,,,,,,%f.....%f",s,v);

            if (s<v) {

                log("=========%f",s-v);

                  menu->setPosition(p1);

                       }

            if (s>v) {

                //利用相似三角形求坐标;

                //一个直角边的长度;

                if (p1.y<=sp->getPosition().y) {

                    float x1=sqrtf(s*s-(p1.x-sp->getPosition().x)*(p1.x-sp->getPosition().x));

                    float x2=v*(p1.x-sp->getPosition().x)/s+sp->getPosition().x;//相似三角形比例算出另外一边;

                    //则所求临界点的x坐标为;

                    //            float x3=sp->getPosition().x+x;

                    //y坐标

                    float y3=sp->getPosition().y-v*x1/s;

                    log("y3=%f",y3);

                    //临界点为

                    Vec2 v3=Vec2(x2, y3);

                    menu->setPosition(v3);

                }

                else

                {

                    float x1=sqrtf(s*s-(p1.x-sp->getPosition().x)*(p1.x-sp->getPosition().x));

                    float x2=v*(p1.x-sp->getPosition().x)/s+sp->getPosition().x;//相似三角形比例算出另外一边;

                    //则所求临界点的x坐标为;

                    //            float x3=sp->getPosition().x+x;

                    //y坐标

                    float y3=sp->getPosition().y+v*x1/s;

                    log("y3=%f",y3);

                    //临界点为

                    Vec2 v3=Vec2(x2, y3);

                    menu->setPosition(v3);

                }

            }

        };

  • 相关阅读:
    9-15
    9-5
    8-26
    8-24
    7-20
    7-17
    我离职后要干些什么
    6-18
    5-28
    5-20
  • 原文地址:https://www.cnblogs.com/xiajianwei/p/5000954.html
Copyright © 2020-2023  润新知