1
CCSetIterator iter = touches->begin();

        for (; iter != touches->end(); iter++)
            {
            CCTouch* touchPoint = (CCTouch*)(*iter);

            if(touchPoint->getID()==0)
            {
                CCLog("TOUCH_1");
                location1 = touchPoint->getLocationInView();
                location1 = CCDirector::sharedDirector()->convertToGL(location1);




            }

            if(touchPoint->getID()==1)
            {


                CCLog("TOUCH_2");

                location2 = touchPoint->getLocationInView();
                location2 = CCDirector::sharedDirector()->convertToGL(location2);
                CCSprite* lightning = CCSprite::create("lightningFrame_0.png");
                lightning->setScale(.4);
                lightning->setPosition(ccp((location1.x+location2.x)/2,(location1.y+location2.y)/2));
                lightning->setScaleX(ccpDistance(location1,location2)/1920);
                this->addChild(lightning,0,0);


                float angleRad = atanf((location2.y-location1.y)/(location2.x-location1.x));
                float angleDeg = CC_RADIANS_TO_DEGREES(angleRad);
                lightning->setRotation(-angleDeg);
                addBoxBodyForSprite(lightning);
                CCAction* removeChild = CCCallFuncN::create(this,callfuncN_selector(HelloWorld::spriteDone));
                CCAction* fadeAway = CCFadeOut::create(.5);
                lightning->runAction(CCSequence::create(animInt.lightningAnimation(), removeChild ,NULL));
                lightning->runAction(fadeAway);





            }

    }

上記のコードは 2 つのタッチ ポイントを取得し、その間に稲妻のスプライトを追加します。Android では完璧に動作しますが、iOS では場所 1 と場所 2 を混同することがあります。「ギャロップ」のように 2 つのタッチをゆっくりと適用すると、iOS で動作します。なぜこのように振る舞うのですか?1週間かそこら私を困惑させてきました。どんな情報でもいいです!

4

0 に答える 0