간단한 스프라이트를 잘라낼 수 없습니다. Cocos2d-x 3.1rc0을 사용하고 있습니다. 여기에 코드가 있습니다.Cocos2d-x를 사용하여 스프라이트 클립
local sprite = cc.Sprite:create("red-box.png")
local shape = cc.DrawNode:create()
shape:drawPolygon({cc.p(0, 0), cc.p(0, 100), cc.p(100, 100), cc.p(100, 0), cc.p(0, 0)}, 5, cc.c4b(0, 0, 0, 1), 0, cc.c4b(0, 0, 0, 1))
local clipper = cc.ClippingNode:create(shape)
clipper:setContentSize(sprite:getContentSize())
clipper:setScale(0.25)
clipper:setGlobalZOrder(20)
clipper:setPosition(10, 10)
clipper:setInverted(true)
clipper:addChild(sprite)
gameLayer:addChild(clipper)
이 질문에 사용 된 것과 동일한 패턴을 다음과
- Opposite of glscissor in Cocos2D?
- Cocos2d-x - how to set part of CCLayer transparent?
- http://www.onemoresoftwareblog.com/2013/12/cocos2d-x-ccclippingnode-triple-c.html는 (좋은 예를 제공한다) 여기서
는 이미지가를 나타내는이다 문제 :
저는 clipper : setAlphaThreshold (0) 설정과 같은 다양한 조합을 시도했습니다.
가의 depthFormat가 GL_DEPTH24_STENCIL8_OES로 설정 : 심지어 시도하고이 사람의 코드를 구현하기까지했다. 그래서 그게 문제가 아니에요.
또한 왜 스텐실의 드로잉은 맨 아래 왼쪽이 아닌 가운데에서 시작합니까? 깎기와 모양의 앵커 포인트를 설정하고 움직일 수 없습니다. 혼란스러워.
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH24_STENCIL8_OES
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples: 0 ];
[eaglView setMultipleTouchEnabled:YES];
// Use RootViewController manage CCEAGLView
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;
viewController.view = eaglView;
// Set RootViewController to window
if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
// warning: addSubView doesn't work on iOS6
[window addSubview: viewController.view];
}
else
{
// use this method on ios6
[window setRootViewController:viewController];
}
[window makeKeyAndVisible];
[[UIApplication sharedApplication] setStatusBarHidden: YES];
// IMPORTANT: Setting the GLView should be done after creating the RootViewController
cocos2d::GLView *glview = cocos2d::GLView::createWithEAGLView(eaglView);
cocos2d::Director::getInstance()->setOpenGLView(glview);
cocos2d::Application::getInstance()->run();
return YES;