1

スプライトを画面の中央から画面の上端から 10 ピクセルの位置に移動する方法を考えていました。したがって、上に移動しているように見えます。

これはこれまでの私のコードです

var LoginLayer = cc.Layer.extend({

init:function () {

    //////////////////////////////
    // 1. super init first
    this._super();

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.
    // ask director the window size
    var size = cc.Director.getInstance().getWinSize();

    //Create Background Layer
    var background = cc.LayerColor.create( g_Colors.cedarWoodFinish, size.width, size.height);
    background.setAnchorPoint( cc.p(0.5,0.5) );

    //Create Logo Layer
    var logo = cc.Sprite.create(s_logo);
    logo.setAnchorPoint(cc.p(0.5, 1));
    logo.setPosition(cc.p(size.width / 2, size.height + ((logo.getContentSize().height * logo.getScaleY()) /2)));
    logo.setScale(0.5);

    //Add Layers To Scene
    this.addChild(background);
    this.addChild(logo);

    var logoMoveUpAnimation = cc.MoveTo.create(2, cc.p(size.width / 2, size.height - 10) );
    logo.runAction(logoMoveUpAnimation);
}
});

var LoginScene = cc.Scene.extend({
onEnter:function () {
    this._super();
    var layer = new LoginLayer();
    this.addChild(layer);
    layer.init();
}
});
4

1 に答える 1

1

使用している Cocos 2d-x のバージョンは何ですか? これらのコード行でスプライトをCocos 2d-x rc0 2.1.3移動できます。

CCSize size = CCDirector::sharedDirector()->getWinSize();
actualY = size.height - 10;
CCFiniteTimeAction* actionMove = 
        CCMoveTo::create( 9.0,ccp(logo->getContentSize().width/2, actualY) );
         CCFiniteTimeAction* actionMoveDone = 
        CCCallFuncN::create( this, 
        callfuncN_selector(HelloWorld::LogoMoveFinished));
    logo->runAction( CCSequence::create(actionMove, 
        actionMoveDone, NULL) );

ここでは、ロゴを位置 (logosize/2,screenheight-10pixels) に移動します。ロゴが移動されたときにLogoMoveFinished関数が呼び出されます。

于 2013-08-06T16:46:16.487 に答える