2010-06-21 59 views
4

我正在嘗試製作縮放圖像的CCMenuItem。例如,我嘗試過:在Cocos2d中縮放CCMenuItem(Objective-C)

CCSprite* normalSprite = [CCSprite spriteWithFile:@"button_play.png"]; 
CCSprite* selectedSprite = [CCSprite spriteWithFile:@"button_play.png"]; 
selectedSprite.scale = 1.2; 

CCMenuItem menuItem = [CCMenuItemSprite 
         itemFromNormalSprite:normalSprite 
         selectedSprite:selectedSprite 
         target:self 
         selector:@selector(onPlay:)]; 

但它看起來像CCMenuItemSprite忽略底層精靈的比例。有沒有辦法做到這一點(除了創建底層圖像的縮放版本)?謝謝。

回答

0

不,沒有別的辦法。事情是menuItem只承認精靈的文件部分。它沒有考慮其他物業,如scale財產。

4

Thyrgle對於CCMenuItem的工作原理是正確的。

但是,肯定有辦法做到你想要的。所有你需要做的是子類CCMenuItem,並覆蓋選定和未選定的方法來實現你想要的。事實上,我敢肯定你可以從CCMenuItemLabel中剪切和粘貼代碼,因爲將項目縮放到1.2就是它的功能。 (事實上​​,它確實更好,因爲它的動畫規模的變化。)

-(void) selected 
{ 
    // subclass to change the default action 
    if(isEnabled_) {  
     [super selected]; 
     [self stopActionByTag:kZoomActionTag]; 
     CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:1.2f]; 
     zoomAction.tag = kZoomActionTag; 
     [self runAction:zoomAction]; 
    } 
} 

-(void) unselected 
{ 
    // subclass to change the default action 
    if(isEnabled_) { 
     [super unselected]; 
     [self stopActionByTag:kZoomActionTag]; 
     CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:1.0f]; 
     zoomAction.tag = kZoomActionTag; 
     [self runAction:zoomAction]; 
    } 
}