0
我正在製作一個小型遊戲,其中主要的遊戲玩法圖層根據大量參數放大和縮小。這是通過將.scale屬性設置爲小數部分來完成的。Cocos2d CCLayer.scale
但是,我有一個問題,當從任何子節點調用[[CCDirector sharedDirector] winSize];
,我得到一個縮放窗口大小,這有點吸:)除了乘以所有我的離屏檢查比例加1呢?
下面是一個例子
我創建一個CCLayer,並把精靈就可以了。所有的精靈與初始化過程中屏幕尺寸的靜態變量,基本上
static CGRect screenRect; //stored as a static variable for performance reasons
...
-(id)init{
...
// make sure to initialize the screen rect only once
if (CGRectIsEmpty(screenRect)){
CGSize screenSize = [[CCDirector sharedDirector] winSize];
screenRect = CGRectMake(0, 0, screenSize.width, screenSize.height);
CCLOG(@"Screen Size during init: %f, %f", screenSize.width, screenSize.height);
}
}
那麼我當精靈圍繞它是否關閉屏幕上移動的檢查,如果是的話,我把它自動給對面:
if(newPosition.x > screenRect.size.width){
newPosition.x = 0;
}else if(newPosition.x < 0){
newPosition.x = screenRect.size.width;
}
if(newPosition.y > screenRect.size.height){
newPosition.y = 0;
}else if(newPosition.y < 0){
newPosition.y = screenRect.size.height;
}
所有的作品都很好,和預期的一樣。但是,如果我更改父CCLayer的scale
屬性,那麼屏幕外定位將與圖層一起「縮放」,這有點奇怪。因此,如果我設置了CCLayer.scale = 0.5f;
,那麼它看起來好像屏幕邊界已經移動到手機屏幕的「內部」。我想避免這種情況。怎麼樣?
嗨。我檢查了它。它爲我工作很好。我縮放了我的圖層並檢查了winSize。它給予正確的價值。我無法理解你是如何從子節點呼叫的?其處處都是相同的代碼 – 2012-03-16 05:37:17
嗨,謝謝!我剛剛添加了一個代碼示例! – clops 2012-03-16 07:29:30