【已解决】求助关于Layer,怎样才能让其子节点不越界呢???

是这样的,且听我慢慢道来~

我先是建立一个GameLayer,专门用来放游戏的元素。当然还有其他的Layer用来显示状态(比如HP什么的)。

再对这个GameLayer设置ContentSize(960, 720),
我是想把这个作为游戏的默认世界大小,精灵的图片什么也都是以这个作为基准。

然后,我本以为,
只要在HelloWorld里面add这个GameLayer,
再设置GameLayer->setScale(VisibleSize.height / 720),这样就能万事大吉了。

结果问题出现了,
GameLayer下的元素根本不理会这个GameLayer,不但不缩放(会缩放的,之前测试失误),还会越界。。。

怎样才能让GameLayer下的精灵都自动缩放呢???
怎样才能让GameLayer下的精灵都显示在GameLayer内(超出即被裁剪)呢???

求大神解答~~~

用ClippingNode可以解决子元素越界的问题,参考了下cpptests下的ClippingNodeTest

怎样才能让GameLayer下的精灵都自动缩放呢???

GameLayer如果Scale了,那它的子节点也会Scale。

你可以给HelloWorld改下效果就可以看到了。

Scene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();
    
    layer->setScale(0.5f);

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}
```


怎样才能让GameLayer下的精灵都显示在GameLayer内(超出即被裁剪)呢???

超出即被裁剪考虑用遮罩吧。

— Begin quote from ____

引用第1楼偶尔e网事于2014-07-30 11:56发表的 :
怎样才能让GameLayer下的精灵都自动缩放呢???

GameLayer如果Scale了,那它的子节点也会Scale。

你可以给HelloWorld改下效果就可以看到了。
http://www.cocoachina.com/bbs/job.php?action=topost&tid=217521&pid=1016751

— End quote

感谢版主大大的解答,
是会缩放的,刚又试了下,之前估计是哪里失误了。

关于越界的问题,刚也找到解决办法了,用了ClippingNode。