예제 #1
0
        public virtual new CCActionInterval reverse()
        {
            CCPointArray cCPointArray        = this.m_pPoints.copy();
            CCPoint      controlPointAtIndex = cCPointArray.getControlPointAtIndex(0);

            for (int i = 1; i < cCPointArray.count(); i++)
            {
                CCPoint cCPoint = cCPointArray.getControlPointAtIndex(i);
                cCPointArray.replaceControlPoint(cCPoint.Sub(controlPointAtIndex), i);
                controlPointAtIndex = cCPoint;
            }
            CCPointArray cCPointArray1 = cCPointArray.reverse();

            controlPointAtIndex = cCPointArray1.getControlPointAtIndex(cCPointArray1.count() - 1);
            cCPointArray1.removeControlPointAtIndex(cCPointArray1.count() - 1);
            controlPointAtIndex = controlPointAtIndex.Neg();
            cCPointArray1.insertControlPoint(controlPointAtIndex, 0);
            for (int j = 1; j < cCPointArray1.count(); j++)
            {
                CCPoint controlPointAtIndex1 = cCPointArray1.getControlPointAtIndex(j);
                CCPoint cCPoint1             = controlPointAtIndex1.Neg().Add(controlPointAtIndex);
                cCPointArray1.replaceControlPoint(cCPoint1, j);
                controlPointAtIndex = cCPoint1;
            }
            return(CCCardinalSplineBy.create(this.m_fDuration, cCPointArray1, this.m_fTension));
        }
예제 #2
0
        public virtual CCActionInterval reverse()
        {
            CCPointArray copyConfig = (CCPointArray)m_pPoints.copy();

            //
            // convert "absolutes" to "diffs"
            //
            CCPoint p = copyConfig.getControlPointAtIndex(0);

            for (int i = 1; i < copyConfig.count(); ++i)
            {
                CCPoint current = copyConfig.getControlPointAtIndex(i);
                CCPoint diff    = current - p;
                copyConfig.replaceControlPoint(diff, i);

                p = current;
            }


            // convert to "diffs" to "reverse absolute"

            CCPointArray pReverse = copyConfig.reverse();

            // 1st element (which should be 0,0) should be here too

            p = pReverse.getControlPointAtIndex(pReverse.count() - 1);
            pReverse.removeControlPointAtIndex(pReverse.count() - 1);

            p = -p;
            pReverse.insertControlPoint(p, 0);

            for (int i = 1; i < pReverse.count(); ++i)
            {
                CCPoint current = pReverse.getControlPointAtIndex(i);
                current = -current;
                CCPoint abs = current + p;
                pReverse.replaceControlPoint(abs, i);

                p = abs;
            }

            return(CCCardinalSplineBy.create(Duration, pReverse, m_fTension));
        }