コード例 #1
0
CCActionInterval* CCBezierBy::reverse(void)
{
	ccBezierConfig r;

	r.endPosition = ccpNeg(m_sConfig.endPosition);
	r.controlPoint_1 = ccpAdd(m_sConfig.controlPoint_2, ccpNeg(m_sConfig.endPosition));
	r.controlPoint_2 = ccpAdd(m_sConfig.controlPoint_1, ccpNeg(m_sConfig.endPosition));

	CCBezierBy *pAction = CCBezierBy::actionWithDuration(m_fDuration, r);
	return pAction;
}
コード例 #2
0
BWActionInterval* BWBezierBy::reverse(void)
{
    BWBezierConfig r;

    r.endPosition = ccpNeg(m_sConfig.endPosition);
    r.controlPoint_1 = ccpAdd(m_sConfig.controlPoint_2, ccpNeg(m_sConfig.endPosition));
    r.controlPoint_2 = ccpAdd(m_sConfig.controlPoint_1, ccpNeg(m_sConfig.endPosition));

    BWBezierBy *pAction = BWBezierBy::create(m_fDuration, r);
    return pAction;
}
コード例 #3
0
/**
 * 设置位置,必须先设置场景代理
 */
void
MCCamera::locate()
{
    if (sceneDelegate_) {
        sceneDelegate_->moveSceneToLocation(ccpNeg(viewport_.origin));
    }
}
コード例 #4
0
/**
 * 聚焦到某人身上,必须先设置场景代理
 *
 * 聚焦:
 *    1.假定人物位于屏幕中间
 *    2.消除地图滚动的偏移
 */
void
MCCamera::focus(MCRole *aRole)
{
    if (sceneDelegate_) {
        CCSize winSize = CCDirectorGetWindowsSize();
        MCScene *scene = sceneDelegate_->getScene();
        CCTMXTiledMap *map = sceneDelegate_->getScene()->getMap();
        CCSize sceneSize = scene->getSceneSize();
        CCPoint mapOffset = map->getPosition();
        CCPoint rolePosition = ccpSub(aRole->getEntity()->getPosition(), mapOffset);
        CCPoint expectedViewportOrigin = ccp(rolePosition.x - winSize.width / 2,
                                             rolePosition.y - winSize.height / 2);
        /* 清除偏移 */
        /* 基于地图 */
        float viewportLeft = expectedViewportOrigin.x;
        float viewportRight = expectedViewportOrigin.x + viewport_.size.width;
        float viewportTop = expectedViewportOrigin.y + viewport_.size.height;
        float viewportBottom = expectedViewportOrigin.y;
        
        if (sceneSize.width < winSize.width) {
            sceneSize.width = winSize.width;
        }
        if (sceneSize.height < winSize.height) {
            sceneSize.height = winSize.height;
        }
        
        if (viewportLeft < 0) {
            expectedViewportOrigin.x -= viewportLeft;
        } else if (viewportRight > sceneSize.width) {
            expectedViewportOrigin.x -= (viewportRight - sceneSize.width);
        }
        if (viewportTop > sceneSize.height) {
            expectedViewportOrigin.y -= (viewportTop - sceneSize.height);
        } else if (viewportBottom < 0) {
            expectedViewportOrigin.y -= viewportBottom;
        }
        
        viewport_.origin = expectedViewportOrigin;
        sceneDelegate_->moveSceneToLocation(ccpNeg(expectedViewportOrigin));
    }
}
コード例 #5
0
/**
 * 重置位置,必须先设置场景代理
 */
void
MCCamera::restore()
{
    viewport_.origin = ccpNeg(location_);
}