Анимация спрайта во время прыжка - PullRequest
0 голосов
/ 06 февраля 2012

Как оживить спрайта во время прыжка?т.е. перемещение глаз или анимация спрайта с помощью CCAnimate

    CCSpriteFrameCache.sharedSpriteFrameCache().addSpriteFrames("AnimBear.plist");
    this._bear = CCSprite.sprite("bear1.png", true);


    spritesheet1 = CCSpriteSheet.spriteSheet("AnimBear.png");

    spritesheet1.addChild(_bear, 1);

    addChild(spritesheet1, 1);

    ArrayList<CCSpriteFrame> animFrames = new ArrayList<CCSpriteFrame>();
    CCSpriteFrameCache.sharedSpriteFrameCache();
    for (int i = 1; i <= 8; i++) {
        CCSpriteFrame frame = CCSpriteFrameCache
                .spriteFrameByName(
                        "bear" + i + ".png");
        animFrames.add(frame);
    }
    CCAnimation anim = CCAnimation.animation("AnimBear", .175f,
            animFrames);

    _bear.setPosition(CGPoint.make(_bear.getContentSize().width, 50));



    CCIntervalAction action=CCAnimate.action(0.1f, anim, false);
    this.walkAction = CCRepeatForever.action(action); 

    _bear.runAction(walkAction);

и перемещение на ощупь

    public boolean ccTouchesEnded(MotionEvent event) {


        CGPoint touchLocation = CCDirector.sharedDirector().convertToGL(
                CGPoint.make(event.getX(), event.getY()));

        float bearVelocity = 480.0f/3.0f;
        CGPoint moveDifference = CGPoint.ccpSub(touchLocation, _bear.getPosition());
        float distanceToMove = CGPoint.ccpLength(moveDifference);
        float moveDuration = distanceToMove / bearVelocity;

        if (moveDifference.x < 0) {
            _bear.flipX_= false;
        } else {
            _bear.flipX_ = true;
        }    

        _bear.stopAction(moveAction);

        if (!_moving) {
            _bear.runAction(walkAction);
        }
        CCMoveTo actionMove=CCMoveTo.action(moveDuration, touchLocation);
        CCCallFuncN actionMoveDone1 = CCCallFuncN.action(this, "bearMoveEnded");
        CCSequence actions = CCSequence.actions(actionMove, actionMoveDone1);
        _bear.stopAllActions();
        this.moveAction = actions;

        _bear.runAction(moveAction);

        _moving = true;

        return CCTouchDispatcher.kEventHandled;
    }

1 Ответ

1 голос
/ 27 февраля 2013

В этой анимации сначала выполните все, и после этого, если вы дотронетесь до экрана, тогда вы захотите, чтобы действие, которое вы хотите, произошло ..... Если вы хотите, чтобы анимация перемещала спрайт одновременно, завершите весь код в public boolean ccTouchesEnded (MotionEvent event) { }

...