MenuItemSprite的scale设置顺序问题

我在学习过程中碰到了如下一个问题,希望大家能够解释一下其中的原因:
在创建一个精灵菜单时,我想设置每一个精灵的scale,发现在创建MenuItemSprite时设置他的scale属性与创建Menu之后在设置MenuItemSprite的scale的属性,MenuItemSprite缩放的结果是不一样的。具体代码如下:

一、创建MenuItemSprite时设置scale属性:
// 创建精灵帧缓存
let controlCache = cc.spriteFrameCache;
controlCache.addSpriteFrames(res.ControlMenu_plist, res.ControlMenu_png);

    // up btn
    let cItem_up_n = new cc.Sprite(controlCache.getSpriteFrame("up.png"));
    let cItem_up_s = new cc.Sprite(controlCache.getSpriteFrame("up.png"));
    let cMenu_up = new cc.MenuItemSprite(cItem_up_n, cItem_up_s, this.menuItemCallback, this);
    cMenu_up.scale = 0.5;

    // down btn
    let cItem_down_n = new cc.Sprite(controlCache.getSpriteFrame("down.png"));
    let cItem_down_s = new cc.Sprite(controlCache.getSpriteFrame("down.png"));
    let cMenu_down = new cc.MenuItemSprite(cItem_down_n, cItem_down_s, this.menuItemCallback, this);
    cMenu_down.scale = 0.5;

    // left btn
    let cItem_left_n = new cc.Sprite(controlCache.getSpriteFrame("left.png"));
    let cItem_left_s = new cc.Sprite(controlCache.getSpriteFrame("left.png"));
    let cMenu_left = new cc.MenuItemSprite(cItem_left_n, cItem_left_s, this.menuItemCallback, this);
    cMenu_left.scale = 0.5;

    // right btn
    let cItem_right_n = new cc.Sprite(controlCache.getSpriteFrame("right.png"));
    let cItem_right_s = new cc.Sprite(controlCache.getSpriteFrame("right.png"));
    let cMenu_right = new cc.MenuItemSprite(cItem_right_n, cItem_right_s, this.menuItemCallback, this);
    cMenu_right.scale = 0.5;

    let controlMenu = new cc.Menu(cMenu_up, cMenu_down, cMenu_left, cMenu_right);
    controlMenu.alignItemsVertically();
    this.addChild(controlMenu);

二、创建Menu后设置scale属性:
let controlMenu = new cc.Menu(cMenu_up, cMenu_down, cMenu_left, cMenu_right);
controlMenu.alignItemsVertically();

    cMenu_up.scale = 0.5;
    cMenu_down.scale = 0.5;
    cMenu_left.scale = 0.5;
    cMenu_right.scale = 0.5;
    this.addChild(controlMenu);