Пример #1
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.Sub(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.Neg();
            pReverse.insertControlPoint(p, 0);

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

                p = abs;
            }

            return(CCCardinalSplineBy.create(m_fDuration, pReverse, m_fTension));
        }
Пример #2
0
        /** initializes the action with a duration and an array of points */
        public virtual bool initWithDuration(float duration, CCPointArray points, float tension)
        {
            if (points == null || points.count() == 0)
            {
                return(false);
            }
            if (base.initWithDuration(duration))
            {
                setPoints(points);
                m_fTension = tension;

                return(true);
            }

            return(false);
        }