我想知道如何将一个精灵从屏幕中心移动到距屏幕顶边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();
}
});
答案 0 :(得分:1)
您使用的是哪种版本的Cocos 2d-x?对于Cocos 2d-x rc0 2.1.3
,您可以使用这些代码行移动Sprite。
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
函数。